Jacek Caban : win32u: Move NtUserGetCursor implementation from user32.

Alexandre Julliard julliard at winehq.org
Fri Dec 3 15:18:59 CST 2021


Module: wine
Branch: master
Commit: a25148ae46b15b3644b57828739e230b08f920e6
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=a25148ae46b15b3644b57828739e230b08f920e6

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Dec  3 12:55:44 2021 +0100

win32u: Move NtUserGetCursor implementation from user32.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/user32/cursoricon.c | 19 +------------------
 dlls/user32/user32.spec  |  2 +-
 dlls/win32u/cursoricon.c | 18 ++++++++++++++++++
 dlls/win32u/syscall.c    |  1 +
 dlls/win32u/win32u.spec  |  2 +-
 dlls/wow64win/syscall.h  |  1 +
 dlls/wow64win/user.c     |  5 +++++
 include/ntuser.h         |  1 +
 8 files changed, 29 insertions(+), 20 deletions(-)

diff --git a/dlls/user32/cursoricon.c b/dlls/user32/cursoricon.c
index eb033e72005..ba5c5d8904c 100644
--- a/dlls/user32/cursoricon.c
+++ b/dlls/user32/cursoricon.c
@@ -1873,7 +1873,7 @@ BOOL WINAPI DestroyIcon( HICON hIcon )
     {
         BOOL shared = (obj->rsrc != NULL);
         release_user_handle_ptr( obj );
-        ret = (GetCursor() != hIcon);
+        ret = (NtUserGetCursor() != hIcon);
         if (!shared) free_icon_handle( hIcon );
     }
     return ret;
@@ -1933,23 +1933,6 @@ HCURSOR WINAPI DECLSPEC_HOTPATCH SetCursor( HCURSOR hCursor /* [in] Handle of cu
     return hOldCursor;
 }
 
-/***********************************************************************
- *		GetCursor (USER32.@)
- */
-HCURSOR WINAPI GetCursor(void)
-{
-    HCURSOR ret;
-
-    SERVER_START_REQ( set_cursor )
-    {
-        req->flags = 0;
-        wine_server_call( req );
-        ret = wine_server_ptr_handle( reply->prev_handle );
-    }
-    SERVER_END_REQ;
-    return ret;
-}
-
 
 /***********************************************************************
  *		ClipCursor (USER32.@)
diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec
index a89bcdc8c56..8b8dcb611f9 100644
--- a/dlls/user32/user32.spec
+++ b/dlls/user32/user32.spec
@@ -282,7 +282,7 @@
 @ stdcall GetClipboardViewer() NtUserGetClipboardViewer
 @ stdcall GetComboBoxInfo(long ptr)
 @ stdcall GetCurrentInputMessageSource(ptr)
-@ stdcall GetCursor()
+@ stdcall GetCursor() NtUserGetCursor
 @ stdcall GetCursorFrameInfo(long long long ptr ptr)
 @ stdcall GetCursorInfo(ptr)
 @ stdcall GetCursorPos(ptr)
diff --git a/dlls/win32u/cursoricon.c b/dlls/win32u/cursoricon.c
index 8d297e838c9..ad7e51b507e 100644
--- a/dlls/win32u/cursoricon.c
+++ b/dlls/win32u/cursoricon.c
@@ -61,3 +61,21 @@ INT WINAPI NtUserShowCursor( BOOL show )
 
     return count;
 }
+
+
+/***********************************************************************
+ *	     NtUserGetCursor (win32u.@)
+ */
+HCURSOR WINAPI NtUserGetCursor(void)
+{
+    HCURSOR ret;
+
+    SERVER_START_REQ( set_cursor )
+    {
+        req->flags = 0;
+        wine_server_call( req );
+        ret = wine_server_ptr_handle( reply->prev_handle );
+    }
+    SERVER_END_REQ;
+    return ret;
+}
diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c
index e07fdcc6953..c8f08e3c2a6 100644
--- a/dlls/win32u/syscall.c
+++ b/dlls/win32u/syscall.c
@@ -111,6 +111,7 @@ static void * const syscalls[] =
     NtUserGetClipboardOwner,
     NtUserGetClipboardSequenceNumber,
     NtUserGetClipboardViewer,
+    NtUserGetCursor,
     NtUserGetKeyState,
     NtUserGetKeyboardLayout,
     NtUserGetKeyboardState,
diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec
index 95bddc09e5a..7d3421efbcc 100644
--- a/dlls/win32u/win32u.spec
+++ b/dlls/win32u/win32u.spec
@@ -912,7 +912,7 @@
 @ stub NtUserGetControlColor
 @ stub NtUserGetCurrentDpiInfoForWindow
 @ stub NtUserGetCurrentInputMessageSource
-@ stub NtUserGetCursor
+@ stdcall -syscall NtUserGetCursor()
 @ stub NtUserGetCursorFrameInfo
 @ stub NtUserGetCursorInfo
 @ stub NtUserGetDC
diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h
index 2ffe10b733c..7a148935444 100644
--- a/dlls/wow64win/syscall.h
+++ b/dlls/wow64win/syscall.h
@@ -98,6 +98,7 @@
     SYSCALL_ENTRY( NtUserGetClipboardOwner ) \
     SYSCALL_ENTRY( NtUserGetClipboardSequenceNumber ) \
     SYSCALL_ENTRY( NtUserGetClipboardViewer ) \
+    SYSCALL_ENTRY( NtUserGetCursor ) \
     SYSCALL_ENTRY( NtUserGetKeyState ) \
     SYSCALL_ENTRY( NtUserGetKeyboardLayout ) \
     SYSCALL_ENTRY( NtUserGetKeyboardState ) \
diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c
index da94ea02dc0..eea3879b9b5 100644
--- a/dlls/wow64win/user.c
+++ b/dlls/wow64win/user.c
@@ -234,6 +234,11 @@ NTSTATUS WINAPI wow64_NtUserRemoveClipboardFormatListener( UINT *args )
     return NtUserRemoveClipboardFormatListener( hwnd );
 }
 
+NTSTATUS WINAPI wow64_NtUserGetCursor( UINT *args )
+{
+    return HandleToUlong( NtUserGetCursor() );
+}
+
 NTSTATUS WINAPI wow64_NtUserAttachThreadInput( UINT *args )
 {
     DWORD from = get_ulong( &args );
diff --git a/include/ntuser.h b/include/ntuser.h
index ec0ccc0c2c5..e962c5b3fa2 100644
--- a/include/ntuser.h
+++ b/include/ntuser.h
@@ -98,6 +98,7 @@ INT     WINAPI NtUserGetClipboardFormatName( UINT format, WCHAR *buffer, INT max
 HWND    WINAPI NtUserGetClipboardOwner(void);
 DWORD   WINAPI NtUserGetClipboardSequenceNumber(void);
 HWND    WINAPI NtUserGetClipboardViewer(void);
+HCURSOR WINAPI NtUserGetCursor(void);
 LONG    WINAPI NtUserGetDisplayConfigBufferSizes( UINT32 flags, UINT32 *num_path_info,
                                                   UINT32 *num_mode_info );
 INT     WINAPI NtUserGetKeyNameText( LONG lparam, WCHAR *buffer, INT size );




More information about the wine-cvs mailing list