might fix https://bugs.winehq.org/show_bug.cgi?id=56363, waiting for a reply
From: Etaash Mathamsetty 45927311+Etaash-mathamsetty@users.noreply.github.com
--- dlls/user32/user32.spec | 1 + dlls/win32u/input.c | 10 ++++++++++ dlls/win32u/main.c | 5 +++++ dlls/win32u/win32u.spec | 2 +- dlls/wow64win/user.c | 9 +++++++++ include/ntuser.h | 1 + 6 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec index 042730845f1..13427f4f07b 100644 --- a/dlls/user32/user32.spec +++ b/dlls/user32/user32.spec @@ -358,6 +358,7 @@ @ stdcall GetOpenClipboardWindow() NtUserGetOpenClipboardWindow @ stdcall GetParent(long) @ stdcall GetPhysicalCursorPos(ptr) +@ stdcall GetPointerDeviceRects(long ptr ptr) NtUserGetPointerDeviceRects @ stdcall GetPointerDevices(ptr ptr) @ stdcall GetPointerInfo(long ptr) @ stdcall GetPointerType(long ptr) diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c index ef8d564c264..e124c915a6e 100644 --- a/dlls/win32u/input.c +++ b/dlls/win32u/input.c @@ -2530,6 +2530,16 @@ BOOL clip_fullscreen_window( HWND hwnd, BOOL reset ) return ret; }
+/********************************************************************** + * NtUserGetPointerDeviceRects (win32u.@) + */ +BOOL WINAPI NtUserGetPointerDeviceRects( HANDLE device, RECT *pointer_display_rect, RECT *display_rect ) +{ + FIXME( "device %p pointer_display_rect %p display_rect %p\n", device, pointer_display_rect, display_rect ); + RtlSetLastWin32Error( ERROR_CALL_NOT_IMPLEMENTED ); + return FALSE; +} + /********************************************************************** * NtUserGetPointerInfoList (win32u.@) */ diff --git a/dlls/win32u/main.c b/dlls/win32u/main.c index 3f910c214ed..b1c645e0719 100644 --- a/dlls/win32u/main.c +++ b/dlls/win32u/main.c @@ -1483,6 +1483,11 @@ HWND SYSCALL_API NtUserGetOpenClipboardWindow(void) __ASM_SYSCALL_FUNC( __id_NtUserGetOpenClipboardWindow ); }
+BOOL SYSCALL_API NtUserGetPointerDeviceRects( HANDLE device, RECT *pointer_display_rect, RECT *diplay_rect ) +{ + __ASM_SYSCALL_FUNC( __id_NtUserGetPointerDeviceRects ); +} + BOOL SYSCALL_API NtUserGetPointerInfoList( UINT32 id, POINTER_INPUT_TYPE type, UINT_PTR unk0, UINT_PTR unk1, SIZE_T size, UINT32 *entry_count, UINT32 *pointer_count, void *pointer_info ) { diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 76a60bf1dc8..24c68776838 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -968,7 +968,7 @@ @ stub NtUserGetPointerDeviceInputSpace @ stub NtUserGetPointerDeviceOrientation @ stub NtUserGetPointerDeviceProperties -@ stub NtUserGetPointerDeviceRects +@ stdcall -syscall NtUserGetPointerDeviceRects(long ptr ptr) @ stub NtUserGetPointerDevices @ stub NtUserGetPointerFrameTimes @ stdcall -syscall NtUserGetPointerInfoList(long long long long long ptr ptr ptr) diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c index 2dd811578f5..e84fc2616f5 100644 --- a/dlls/wow64win/user.c +++ b/dlls/wow64win/user.c @@ -2744,6 +2744,15 @@ NTSTATUS WINAPI wow64_NtUserGetOpenClipboardWindow( UINT *args ) return HandleToUlong( NtUserGetOpenClipboardWindow() ); }
+NTSTATUS WINAPI wow64_NtUserGetPointerDeviceRects( UINT *args ) +{ + HANDLE handle = get_handle( &args ); + void *pointer_display_rect = get_ptr( &args ); + void *display_rect = get_ptr( &args ); + + return NtUserGetPointerDeviceRects( handle, pointer_display_rect, display_rect ); +} + NTSTATUS WINAPI wow64_NtUserGetPointerInfoList( UINT *args ) { UINT id = get_ulong( &args ); diff --git a/include/ntuser.h b/include/ntuser.h index 86f847b8b83..cde949ffba4 100644 --- a/include/ntuser.h +++ b/include/ntuser.h @@ -659,6 +659,7 @@ W32KAPI int WINAPI NtUserGetMouseMovePointsEx( UINT size, MOUSEMOVEPOINT *pt W32KAPI BOOL WINAPI NtUserGetObjectInformation( HANDLE handle, INT index, void *info, DWORD len, DWORD *needed ); W32KAPI HWND WINAPI NtUserGetOpenClipboardWindow(void); +W32KAPI BOOL WINAPI NtUserGetPointerDeviceRects( HANDLE device, RECT *pointer_display_rect, RECT *display_rect ); W32KAPI BOOL WINAPI NtUserGetPointerInfoList( UINT32 id, POINTER_INPUT_TYPE type, UINT_PTR, UINT_PTR, SIZE_T size, UINT32 *entry_count, UINT32 *pointer_count, void *pointer_info ); W32KAPI INT WINAPI NtUserGetPriorityClipboardFormat( UINT *list, INT count );
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=143401
Your paranoid android.
=== debian11 (build log) ===
/usr/bin/i686-w64-mingw32-ld: tmp6614a5a3/win32u-00000000.spec.o:fake:(.edata+0xf50): undefined reference to `NtUserGetPointerDeviceRects@12' collect2: error: ld returned 1 exit status Task: The win32 Wine build failed
=== debian11b (build log) ===
/usr/bin/x86_64-w64-mingw32-ld: tmp66171aef/win32u-00000000.spec.o:fake:(.edata+0xf4c): undefined reference to `NtUserGetPointerDeviceRects' collect2: error: ld returned 1 exit status Task: The wow64 Wine build failed
build failed for unrelated reasons (not including the files that were modified by ./tools/make_specfiles)