Module: wine Branch: master Commit: 3b01fb113fc9b21ebed63f25ff7b80b3ab52f3a8 URL: https://gitlab.winehq.org/wine/wine/-/commit/3b01fb113fc9b21ebed63f25ff7b80b...
Author: Jacek Caban jacek@codeweavers.com Date: Sun Jul 31 12:58:15 2022 +0200
win32u: Use syscall interface for NtGdiOpenDCW.
---
dlls/win32u/gdiobj.c | 1 - dlls/win32u/syscall.c | 1 + dlls/win32u/win32u.spec | 2 +- dlls/win32u/win32u_private.h | 3 --- dlls/win32u/wrappers.c | 9 --------- dlls/wow64win/gdi.c | 18 ++++++++++++++++++ dlls/wow64win/syscall.h | 1 + 7 files changed, 21 insertions(+), 14 deletions(-)
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index f88efbaa679..2088ba3218b 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1101,7 +1101,6 @@ static struct unix_funcs unix_funcs = NtGdiModifyWorldTransform, NtGdiMoveTo, NtGdiOffsetClipRgn, - NtGdiOpenDCW, NtGdiPatBlt, NtGdiPlgBlt, NtGdiPolyDraw, diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index 80c108ab41b..38bb4b6dfbd 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -83,6 +83,7 @@ static void * const syscalls[] = NtGdiHfontCreate, NtGdiInitSpool, NtGdiOffsetRgn, + NtGdiOpenDCW, NtGdiPathToRegion, NtGdiPtInRegion, NtGdiRectInRegion, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 2831b20ece9..b8fdd16b5ff 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -547,7 +547,7 @@ @ stdcall NtGdiMoveTo(long long long ptr) @ stdcall NtGdiOffsetClipRgn(long long long) @ stdcall -syscall NtGdiOffsetRgn(long long long) -@ stdcall NtGdiOpenDCW(ptr ptr ptr long long ptr ptr ptr) +@ stdcall -syscall NtGdiOpenDCW(ptr ptr ptr long long ptr ptr ptr) @ stub NtGdiPATHOBJ_bEnum @ stub NtGdiPATHOBJ_bEnumClipLines @ stub NtGdiPATHOBJ_vEnumStart diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index fe5143d7903..4bafc9bfaaf 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -130,9 +130,6 @@ struct unix_funcs BOOL (WINAPI *pNtGdiModifyWorldTransform)( HDC hdc, const XFORM *xform, DWORD mode ); BOOL (WINAPI *pNtGdiMoveTo)( HDC hdc, INT x, INT y, POINT *pt ); INT (WINAPI *pNtGdiOffsetClipRgn)( HDC hdc, INT x, INT y ); - HDC (WINAPI *pNtGdiOpenDCW)( UNICODE_STRING *device, const DEVMODEW *devmode, - UNICODE_STRING *output, ULONG type, BOOL is_display, - HANDLE hspool, DRIVER_INFO_2W *driver_info, void *pdev ); BOOL (WINAPI *pNtGdiPatBlt)( HDC hdc, INT left, INT top, INT width, INT height, DWORD rop ); BOOL (WINAPI *pNtGdiPlgBlt)( HDC hdc, const POINT *point, HDC hdc_src, INT x_src, INT y_src, INT width, INT height, HBITMAP mask, INT x_mask, INT y_mask, diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index 4e23f325aec..e24f7883fa3 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -426,15 +426,6 @@ INT WINAPI NtGdiOffsetClipRgn( HDC hdc, INT x, INT y ) return unix_funcs->pNtGdiOffsetClipRgn( hdc, x, y ); }
-HDC WINAPI NtGdiOpenDCW( UNICODE_STRING *device, const DEVMODEW *devmode, - UNICODE_STRING *output, ULONG type, BOOL is_display, - HANDLE hspool, DRIVER_INFO_2W *driver_info, void *pdev ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiOpenDCW( device, devmode, output, type, is_display, - hspool, driver_info, pdev ); -} - BOOL WINAPI NtGdiPatBlt( HDC hdc, INT left, INT top, INT width, INT height, DWORD rop ) { if (!unix_funcs) return FALSE; diff --git a/dlls/wow64win/gdi.c b/dlls/wow64win/gdi.c index 6fa36b5f3a3..abb15da1884 100644 --- a/dlls/wow64win/gdi.c +++ b/dlls/wow64win/gdi.c @@ -623,6 +623,24 @@ NTSTATUS WINAPI wow64_NtGdiOffsetRgn( UINT *args ) return NtGdiOffsetRgn( hrgn, x, y ); }
+NTSTATUS WINAPI wow64_NtGdiOpenDCW( UINT *args ) +{ + UNICODE_STRING32 *device32 = get_ptr( &args ); + const DEVMODEW *devmode = get_ptr( &args ); + UNICODE_STRING32 *output32 = get_ptr( &args ); + ULONG type = get_ulong( &args ); + BOOL is_display = get_ulong( &args ); + HANDLE hspool = get_handle( &args ); + DRIVER_INFO_2W *driver_info = get_ptr( &args ); + void *pdev = get_ptr( &args ); + + UNICODE_STRING device, output; + HDC ret = NtGdiOpenDCW( unicode_str_32to64( &device, device32 ), devmode, + unicode_str_32to64( &output, output32 ), type, + is_display, hspool, driver_info, pdev ); + return HandleToUlong( ret ); +} + NTSTATUS WINAPI wow64_NtGdiPathToRegion( UINT *args ) { HDC hdc = get_handle( &args ); diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index b2d4b041779..96c238329b6 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -69,6 +69,7 @@ SYSCALL_ENTRY( NtGdiHfontCreate ) \ SYSCALL_ENTRY( NtGdiInitSpool ) \ SYSCALL_ENTRY( NtGdiOffsetRgn ) \ + SYSCALL_ENTRY( NtGdiOpenDCW ) \ SYSCALL_ENTRY( NtGdiPathToRegion ) \ SYSCALL_ENTRY( NtGdiPtInRegion ) \ SYSCALL_ENTRY( NtGdiRectInRegion ) \