From 47ca0f49c7fe3d439993a8c7e885bfea4b5bae40 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 24 Feb 2022 01:28:18 +0100 Subject: [PATCH] win32u: Move NtUserGetCursorInfo implementation from user32. Signed-off-by: Jacek Caban Signed-off-by: Huw Davies Signed-off-by: Alexandre Julliard --- dlls/user32/input.c | 24 ------------------------ dlls/user32/user32.spec | 2 +- dlls/win32u/gdiobj.c | 1 + dlls/win32u/input.c | 23 +++++++++++++++++++++++ dlls/win32u/win32u.spec | 2 +- dlls/win32u/win32u_private.h | 1 + dlls/win32u/wrappers.c | 6 ++++++ include/ntuser.h | 1 + 8 files changed, 34 insertions(+), 26 deletions(-) diff --git a/dlls/user32/input.c b/dlls/user32/input.c index 781896fd16b..6cf60abeae2 100644 --- a/dlls/user32/input.c +++ b/dlls/user32/input.c @@ -307,30 +307,6 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetCursorPos( POINT *pt ) } -/*********************************************************************** - * GetCursorInfo (USER32.@) - */ -BOOL WINAPI GetCursorInfo( PCURSORINFO pci ) -{ - BOOL ret; - - if (!pci) return FALSE; - - SERVER_START_REQ( get_thread_input ) - { - req->tid = 0; - if ((ret = !wine_server_call( req ))) - { - pci->hCursor = wine_server_ptr_handle( reply->cursor ); - pci->flags = (reply->show_count >= 0) ? CURSOR_SHOWING : 0; - } - } - SERVER_END_REQ; - GetCursorPos(&pci->ptScreenPos); - return ret; -} - - /********************************************************************** * SetCapture (USER32.@) */ diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec index 5204852bef5..40044023bf4 100644 --- a/dlls/user32/user32.spec +++ b/dlls/user32/user32.spec @@ -284,7 +284,7 @@ @ stdcall GetCurrentInputMessageSource(ptr) @ stdcall GetCursor() NtUserGetCursor @ stdcall GetCursorFrameInfo(long long long ptr ptr) -@ stdcall GetCursorInfo(ptr) +@ stdcall GetCursorInfo(ptr) NtUserGetCursorInfo @ stdcall GetCursorPos(ptr) @ stdcall GetDC(long) @ stdcall GetDCEx(long long long) diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index 2ac40d71e3c..1d54865bf46 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1162,6 +1162,7 @@ static struct unix_funcs unix_funcs = NtUserEnumDisplayMonitors, NtUserEnumDisplaySettings, NtUserGetAsyncKeyState, + NtUserGetCursorInfo, NtUserGetDisplayConfigBufferSizes, NtUserGetIconInfo, NtUserGetKeyNameText, diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c index f8f4d41ad2c..72af32fd471 100644 --- a/dlls/win32u/input.c +++ b/dlls/win32u/input.c @@ -131,6 +131,29 @@ BOOL get_cursor_pos( POINT *pt ) return ret; } +/*********************************************************************** + * NtUserGetCursorInfo (win32u.@) + */ +BOOL WINAPI NtUserGetCursorInfo( CURSORINFO *info ) +{ + BOOL ret; + + if (!info) return FALSE; + + SERVER_START_REQ( get_thread_input ) + { + req->tid = 0; + if ((ret = !wine_server_call( req ))) + { + info->hCursor = wine_server_ptr_handle( reply->cursor ); + info->flags = reply->show_count >= 0 ? CURSOR_SHOWING : 0; + } + } + SERVER_END_REQ; + get_cursor_pos( &info->ptScreenPos ); + return ret; +} + static void check_for_events( UINT flags ) { if (user_driver->pMsgWaitForMultipleObjectsEx( 0, NULL, 0, flags, 0 ) == WAIT_TIMEOUT) diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 4a743c7d37e..c1dca3d425c 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -914,7 +914,7 @@ @ stub NtUserGetCurrentInputMessageSource @ stdcall -syscall NtUserGetCursor() @ stdcall -syscall NtUserGetCursorFrameInfo(long long ptr ptr) -@ stub NtUserGetCursorInfo +@ stdcall NtUserGetCursorInfo(ptr) @ stub NtUserGetDC @ stub NtUserGetDCEx @ stub NtUserGetDManipHookInitFunction diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index 9b94387be79..002524a18f4 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -199,6 +199,7 @@ struct unix_funcs BOOL (WINAPI *pNtUserEnumDisplaySettings)( UNICODE_STRING *device, DWORD mode, DEVMODEW *dev_mode, DWORD flags ); SHORT (WINAPI *pNtUserGetAsyncKeyState)( INT key ); + BOOL (WINAPI *pNtUserGetCursorInfo)( CURSORINFO *info ); LONG (WINAPI *pNtUserGetDisplayConfigBufferSizes)( UINT32 flags, UINT32 *num_path_info, UINT32 *num_mode_info ); BOOL (WINAPI *pNtUserGetIconInfo)( HICON icon, ICONINFO *info, UNICODE_STRING *module, diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index 8d57fc20036..ca69422f086 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -777,6 +777,12 @@ SHORT WINAPI NtUserGetAsyncKeyState( INT key ) return unix_funcs->pNtUserGetAsyncKeyState( key ); } +BOOL WINAPI NtUserGetCursorInfo( CURSORINFO *info ) +{ + if (!unix_funcs) return FALSE; + return unix_funcs->pNtUserGetCursorInfo( info ); +} + LONG WINAPI NtUserGetDisplayConfigBufferSizes( UINT32 flags, UINT32 *num_path_info, UINT32 *num_mode_info ) { diff --git a/include/ntuser.h b/include/ntuser.h index fdc33ce7e70..8730c739b11 100644 --- a/include/ntuser.h +++ b/include/ntuser.h @@ -205,6 +205,7 @@ HWND WINAPI NtUserGetClipboardViewer(void); HCURSOR WINAPI NtUserGetCursor(void); HCURSOR WINAPI NtUserGetCursorFrameInfo( HCURSOR hCursor, DWORD istep, DWORD *rate_jiffies, DWORD *num_steps ); +BOOL WINAPI NtUserGetCursorInfo( CURSORINFO *info ); LONG WINAPI NtUserGetDisplayConfigBufferSizes( UINT32 flags, UINT32 *num_path_info, UINT32 *num_mode_info ); UINT WINAPI NtUserGetDoubleClickTime(void);