Commit graph

3108 commits

Author SHA1 Message Date
Piotr Caban 2546468b4c gdi32: Implicitly call StartPage in ExtEscape on printer DC. 2024-03-28 19:47:27 +01:00
Nikolay Sivov 8dec8cc96c gdi32/emf: Zero-initialize handles array (Valgrind).
It's checked in emr_reset(), and reallocation already zero-initializes new slots.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-03-25 18:04:09 +01:00
Krzysztof Bogacki 223292da02 win32u: Implement NtGdiDdDDIEnumAdapters2.
Signed-off-by: Krzysztof Bogacki <krzysztof.bogacki@leancode.pl>
2024-02-15 20:39:48 +01:00
Krzysztof Bogacki 10db5b67b8 gdi32: Add D3DKMTEnumAdapters2() stub.
Signed-off-by: Krzysztof Bogacki <krzysztof.bogacki@leancode.pl>
2024-02-15 20:39:46 +01:00
Krzysztof Bogacki 842461979c gdi32/tests: Add D3DKMTEnumAdapters2 tests.
Signed-off-by: Krzysztof Bogacki <krzysztof.bogacki@leancode.pl>
2024-02-15 20:39:46 +01:00
Alexandre Julliard 525835897b gdi32/tests: Fix the expected GetTextMetrics() results on recent Windows. 2024-02-09 12:34:04 +01:00
Brendan McGrath 9b02ac6d42 gdi32: Ignore Datatype when StartDoc is called. 2024-01-23 15:31:51 +01:00
Zhiyi Zhang 36366f129b win32u: Find the correct DIB driver in windrv_CreateDC().
push_dc_driver() places drivers based on their priorities, so the newly created driver is not
necessarily on top. Thus in windrv_CreateDC(), find_dc_driver() should be used to find the DIB
driver instead of assuming the DIB driver is the top driver, which could be the path driver because
it has a higher priority.

The exact wrong code path was:
1. A path driver with priority 400 is created for a DC.
2. windrv_CreateDC() is called to create a window driver for the DC.
3. Then in dibdrv_CreateDC(), push_dc_driver() is called with 'dev' pointing to the top driver, which is the path driver.
4. push_dc_driver() updates 'dev' to point to the address of the next driver because DIB driver has a lower 300 priority.
5. The DIB driver is assigned to 'dev', which is not the original parameter passed into push_dc_driver().
6. In windrv_CreateDC(), get_dibdrv_pdev(*dev) is called, assuming the top driver is the DIB driver. But actually the top
   driver that '*dev' points to is still the path driver.

The added tests can demonstrate the memory corruption before this fix is applied.
2023-12-04 22:10:20 +01:00
Piotr Caban 4446db72eb gdi32: Add ETO_PDY flag support in EMFDC_ExtTextOut. 2023-11-30 23:12:54 +01:00
Nikolay Sivov 95c87562f8 gdi32/emf: Pad EMREXTESCAPE record data. 2023-11-30 10:23:26 +01:00
Nikolay Sivov ba454b239f gdi32/emf: Use public definition for EMREXTESCAPE record. 2023-11-30 10:23:24 +01:00
Nikolay Sivov 7c479e797f gdi32/emf: Align and pad bitmap data in EMRSETDIBITSTODEVICE records. 2023-11-30 10:23:23 +01:00
Nikolay Sivov e63b00b1ad gdi32/emf: Align and pad bitmap data in EMRSTRETCHDIBITS records. 2023-11-30 10:23:22 +01:00
Nikolay Sivov 169a23a140 gdi32/emf: Add description field padding. 2023-11-30 10:23:20 +01:00
Nikolay Sivov 4fac4588bb gdi32/emf: Check for allocation failure in GdiComment(). 2023-11-30 10:23:19 +01:00
Nikolay Sivov 47a939e2ad gdi32/emf: Use padding helper in GdiComment(). 2023-11-30 10:23:18 +01:00
Nikolay Sivov 30be905972 gdi32/emf: Add a helper to pad variable length record data. 2023-11-30 10:23:16 +01:00
Alex Henrie 2fcbfc4ca6 gdi32/tests: Free what GdiConvertToDevmodeW returns with HeapFree.
This partially reverts commit 0b7eed0310.
2023-11-14 11:29:29 +01:00
Alex Henrie 0b7eed0310 gdi32/tests: Use CRT allocation functions. 2023-11-06 11:51:40 +01:00
Alexandre Julliard 7ccb5df0fc makefiles: Always use the global SOURCES variable for .rc files. 2023-11-01 22:43:56 +01:00
Hans Leidekker 863d29ca72 win32u: Get rid of a special case for non-scalable fonts in NtGdiGetCharABCWidthsW(). 2023-10-30 13:35:06 +01:00
Hans Leidekker 31fd070165 gdi32/tests: Skip broken Noto Color Emoji font in character width test. 2023-10-30 13:35:06 +01:00
Piotr Caban 846784f03f gdi32: Fix leak in GdiDeleteSpoolFileHandle. 2023-10-17 18:18:10 +02:00
Alexandre Julliard c047bb6ea3 makefiles: Always use the global SOURCES variable for .sfd files. 2023-10-12 10:59:29 +02:00
Piotr Caban 12c3579bcb gdi32: Add GdiGetDevmodeForPage implementation. 2023-10-11 17:28:15 +02:00
Piotr Caban 78acbb6fec gdi32: Add GdiGetDevmodeForPage stub. 2023-10-11 17:28:14 +02:00
Piotr Caban c2489c501d gdi32: Add GdiDeleteSpoolFileHandle stub. 2023-10-11 17:28:14 +02:00
Piotr Caban 8dfa1d66b1 gdi32: Add GdiGetSpoolFileHandle stub. 2023-10-11 17:28:13 +02:00
Piotr Caban 25e15e9e2c gdi32: Test PlayMetaFile on METADC. 2023-10-11 17:27:40 +02:00
Piotr Caban 5e507b3e3d gdi32: Fix METADC handling in PlayMetaFile. 2023-10-11 17:27:40 +02:00
Nikolay Sivov e04e10b37b gdi32/tests: Add some tests for FixBrushOrgEx().
It appears to be a stub on modern systems. Does not generate EMF output either.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-10-10 23:15:05 +02:00
Nikolay Sivov 86708b36f8 gdi32/emf: Add SetBrushOrgEx() recording.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-10-10 23:15:05 +02:00
Piotr Caban 01fab4c409 gdi32: Update printer DEVMODE in ResetDCW. 2023-10-09 11:38:28 +02:00
Nikolay Sivov fea9bb7523 gdi32/emf: Add SetMetaRgn() recording. 2023-10-09 11:38:11 +02:00
Nikolay Sivov 200d795ff3 gdi32: Reject invalid values in SetMiterLimit(). 2023-10-09 11:38:11 +02:00
Nikolay Sivov 3f30401495 gdi32/tests: Add some tests for SetMiterLimit() argument validation. 2023-10-09 11:38:11 +02:00
Nikolay Sivov 5b471a2963 gdi32/emf: Fix miter limit serialization. 2023-10-09 11:38:09 +02:00
Etaash Mathamsetty 627181d99c gdi32: Add stub for D3DKMTQueryAdapterInfo. 2023-10-09 11:37:49 +02:00
Piotr Caban 59f72abfcf gdi32: Add partial support for creating EMREXTCREATEPEN records. 2023-10-05 18:49:44 +02:00
Piotr Caban b4b39bfbd1 gdi32: Pass default DEVMODE to winspool in CreateDC.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55670
2023-10-02 12:10:41 +02:00
Alexandre Julliard c547659586 nls: Update character tables to Unicode 15.1.0. 2023-09-30 13:23:19 +02:00
Yuxuan Shui 74027f3731 gdi32: Make GetStockObject hotpatchable.
Needed for ntlea.
2023-09-19 16:59:45 +02:00
Alexandre Julliard f078d5b4f9 gdi32: Fix buffer size parameter in GetFontFileData for 64-bit. 2023-09-01 18:06:02 +02:00
Alexandre Julliard 207bdd01ca gdi32/tests: Use nameless unions/structs. 2023-07-20 21:48:39 +02:00
Piotr Caban ef7b183984 gdi32: Fix DIB_PAL_INDICES usage handling in EMR_CREATEMONOBRUSH playback.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55177
2023-07-07 19:55:28 +02:00
Jacek Caban a312a8e29a gdi32/uniscribe: Don't use DECLSPEC_HIDDEN. 2023-06-26 20:19:13 +02:00
Jacek Caban a5f62b3ef7 make_unicode: Don't use DECLSPEC_HIDDEN. 2023-06-26 20:19:13 +02:00
Jacek Caban cd56a1c164 gdi32: Don't use DECLSPEC_HIDDEN. 2023-06-26 20:19:13 +02:00
Jacek Caban da4663d640 win32u: Don't return full OUTLINETEXTMETRICW from __wine_get_file_outline_text_metric. 2023-05-29 11:37:08 +02:00
Jacek Caban 3dbe180ea5 win32u: Extend NtGdiSetDIBitsToDeviceInternal for SetDIBits implementation. 2023-05-29 11:37:08 +02:00