Commit graph

3001 commits

Author SHA1 Message Date
Zhiyi Zhang 546cbdc250 win32u: Create a dummy bitmap for display device contexts.
On Windows 7 and older versions of Windows, calling GetCurrentObject(hdc, OBJ_BITMAP) for a display
device context will return a valid handle. However, this handle will fail for GetObject(). On newer
versions of Windows, GetCurrentObject(hdc, OBJ_BITMAP) for display device contexts returns a bitmap
of virtual screen size and its size changes after display mode changes. This behavior is tested in
the _check_display_dc() function in user32/tests/monitor.c.

The screen shot function of WeChat depends on GetObject() to either return failure or a valid size
for the bitmap from display device contexts. Since Wine currently report Windows 7 as default and to
save memory, the Windows 7 behavior is implemented.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
2022-05-30 22:07:42 +02:00
Huw Davies 6a9a80679d gdi32: Free the client-side emf dc info.
Signed-off-by: Huw Davies <huw@codeweavers.com>
2022-05-24 17:34:59 +02:00
Huw Davies 0c8a076e78 gdi32: Remove second initialization of emf->dc_attr.
Signed-off-by: Huw Davies <huw@codeweavers.com>
2022-05-24 17:34:59 +02:00
Zhiyi Zhang 8bc0c8d646 gdi32: Implement D3DKMTQueryVideoMemoryInfo().
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-17 17:50:43 +02:00
Zhiyi Zhang 37b74e644a gdi32/tests: Add D3DKMTQueryVideoMemoryInfo() tests.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-17 17:50:30 +02:00
Francois Gouget 0519aec310 gdi32/tests: Trace the invalid height in test_max_height().
Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-27 16:14:25 +02:00
Alexandre Julliard 7500fc1ce9 gdi32: Support UTF-8 codepage in TranslateCharsetInfo().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52847
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-22 13:06:15 +02:00
Nikolay Sivov f534e3f499 gdi32: Use NtUserGetSysColor() directly.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-19 17:35:33 +02:00
Jacek Caban cfb6f9a1e8 win32u: Introduce inline helpers for NtUserCallHwndParam calls.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-13 18:13:28 +02:00
Jacek Caban 7f64eead50 win32u: Introduce inline helpers for NtUserCallOneParam calls.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-13 18:13:06 +02:00
Jacek Caban dcca04606e win32u: Use NtUserCallHwndParam for MirrorRgn implementation.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-13 18:12:59 +02:00
Eric Pouech 5c637c228f gdi32/tests: Enable compilation with long types.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-28 10:31:43 +01:00
Jacek Caban 2353ef9bd5 gdi32: Link directly to user32.
On Windows, loading gdi32.dll causes user32.dll to be loaded. It's
important for win32u, which is not fully functional until user32 sets
KernelCallbackTable.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-17 22:16:03 +01:00
Eric Pouech b31225da21 gdi32: Enable compilation with long types.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-10 18:09:46 +01:00
Eric Pouech b072f01e13 win32u: Change NtGdiPolyPolyDraw parameter to ULONG.
As suggested by Nikolay Sivov.

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-01 18:23:19 +01:00
Fabian Maurer 86d36aefc8 gdi32/tests: Avoid "misleading indentation" warnings.
Signed-off-by: Fabian Maurer <dark.shadow4@web.de>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-28 09:55:04 +01:00
Alexandre Julliard f0cd33c69e include: Add support for defining Win32 types as 'long' where possible.
Add -DWINE_NO_LONG_TYPES to modules that still have compilation
warnings with long types.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 20:38:22 +01:00
Alex Henrie ec72025cff gdi32/tests: Drop font test workarounds for Windows <= 2000.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-12 13:21:04 +01:00
Alex Henrie 524dbe4bef gdi32/tests: Mark a GetTextExtentPointW test as broken on Windows 10.
Fixes a testbot failure.

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-12 13:21:01 +01:00
Jacek Caban 2aba4c5839 win32u: Use NtUserCallTwoParam for MirrorRgn implementation.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-07 20:24:38 +01:00
Zhiyi Zhang 1febcf692f gdi32/tests: Test deleting the bitmap used for pattern brush creation.
Test that the bitmap for pattern brush creation can be deleted after CreatePatternBrush() and the
created brush will still function normally. However, the bitmap object can not be retrieved from
LOGBRUSH.lbHatch if the bitmap is deleted.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-07 12:21:50 +01:00
Jacek Caban f359c7f60c win32u: Use NtUserSelectPalette instead of GDISelectPalette.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-03 16:56:08 +01:00
Jacek Caban 41eac6e25c win32u: Use NtUserCallOneParam instead of GDIRealizePalette.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-03 16:56:08 +01:00
Zebediah Figura 220b0a7c06 win32u: Do not free user memory when deleting dibs created with NtGdiDdDDICreateDCFromMemory().
This fixes a test crash in ddraw:ddraw1 introduced by
7d2a7b94aa.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-22 22:20:51 +01:00
Zebediah Figura c1ed24c86e gdi32/tests: Test whether D3DKMTDestroyDCFromMemory() frees the DC memory.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-22 22:20:50 +01:00
Alexandre Julliard d2e7a977cf gdi32/tests: Use the OS/2 last char for the Ansi charset limit.
Fixes a test failure with the cmmi10.ttf font.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-14 12:29:24 +01:00
Akihiro Sagawa 0d1b8adc9c win32u: Use a real family name as otmpFamilyName for substituted face.
GetTextFace remains to return the original face name, e.g. MS Shell Dlg.

Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 11:42:47 +01:00
Akihiro Sagawa 64c31e63b8 gdi32/tests: Test substituted face family name.
Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 11:42:45 +01:00
Jinoh Kang 9301a9e1f8 gdi32: Calculate effective number of scan lines and truncate bitmap bits for EMR_SETDIBITSTODEVICE.
Signed-off-by: Jinoh Kang <jinoh.kang.kr@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 10:49:26 +01:00
Jinoh Kang da126e19e3 gdi32: Allow passing BITMAPINFO with bmiHeader.biSizeImage == 0 for EMF DC.
User-facing APIs should accept biSizeImage == 0, and fix it up accordingly.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51834
Signed-off-by: Jinoh Kang <jinoh.kang.kr@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 10:49:26 +01:00
Jinoh Kang 03e9b882a2 gdi32: Fix bounding box calculation for EMR_STRETCHDIBITS.
rclBounds should denote a closed interval for each axis.

Signed-off-by: Jinoh Kang <jinoh.kang.kr@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 10:49:26 +01:00
Jinoh Kang 3f7df2a5f6 gdi32/tests: Add tests for recording SetDIBitsToDevice in EMFs.
Signed-off-by: Jinoh Kang <jinoh.kang.kr@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 10:49:26 +01:00
Jinoh Kang 53617db97a gdi32/tests: Add tests for recording StretchDIBits in EMFs.
Signed-off-by: Jinoh Kang <jinoh.kang.kr@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 10:49:26 +01:00
Francisco Casas 379333e3c7 gdi32: Do not sign extend 64-bit gdi handles.
Testing on Windows shows typically handles are not sign extended,
however sometimes they are. It's not clear what triggers the change
in behaviour.

Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-27 22:40:50 +02:00
Francisco Casas d85b700df9 gdi32: Avoid integer overflow in the obj map compare fn.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-27 22:40:50 +02:00
Jacek Caban 2cc52c6e45 gdi32: Use DLL forwarding for D3DKMT functions.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-08 16:54:52 +02:00
Jacek Caban c166e9694e gdi32: Don't export Wine extensions.
Link directly to win32u instead.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-08 16:54:48 +02:00
Jacek Caban 80df54a407 user32: Link directly to win32u.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-08 16:54:42 +02:00
Jacek Caban 5a66203ba5 gdi32: Rename gdidc.c to dc.c.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-08 16:54:36 +02:00
Jacek Caban 08f677cadf win32u: Move ntgdi implementation from gdi32.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-07 18:03:11 +02:00
Jacek Caban 7757f4ee7e gdi32: Use __wine_ prefix for Wine ntgdi extensions.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-07 18:03:11 +02:00
Jacek Caban f309721d13 gdi32: Use __wine_unix_call interface for Unix library.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-07 18:03:11 +02:00
Gabriel Ivăncescu e1948ccc37 gdi32: Create the registry keys recursively, if needed.
Fixes a regression introduced by 1cdc74b2d6
when creating new prefixes, as NtCreateKey does not recursively create keys.

Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 20:09:18 +02:00
Jacek Caban 763d8aa1cd gdi32: Use local helpers for Unicode conversion in Unix lib.
Based on ntdll.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-04 16:12:29 +02:00
Jacek Caban 6996627353 gdi32: Avoid using RtlOpenCurrentUser.
Based on open_hkcu_key.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-04 16:12:18 +02:00
Jacek Caban 002d59cf44 gdi32: Don't use RtlDosPathNameToNtPathName_U in get_unix_file_name.
Paths are already in NT format.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-04 16:11:59 +02:00
Jacek Caban f79ed7b41f gdi32: Use win32u_wcsicmp instead of RtlCompareUnicodeStrings.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-04 16:11:42 +02:00
Jacek Caban fb6421f229 gdi32: Use pthread mutex in dib driver.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-04 16:11:31 +02:00
Jacek Caban ea65f57aca gdi32: Use pthread mutex in font.c.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-04 16:11:22 +02:00
Jacek Caban 9aa1cd06dd gdi32: Use pthread mutex instead of gdi_section.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-04 16:11:12 +02:00