Jacek Caban : win32u: Move NtUserGetUpdatedClipboardFormats implementation from user32.

Alexandre Julliard julliard at winehq.org
Mon Nov 15 16:01:27 CST 2021


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Nov 12 12:54:10 2021 +0100

win32u: Move NtUserGetUpdatedClipboardFormats 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/clipboard.c      | 29 -----------------------------
 dlls/user32/user32.spec      |  2 +-
 dlls/win32u/clipboard.c      | 28 ++++++++++++++++++++++++++++
 dlls/win32u/gdiobj.c         |  1 +
 dlls/win32u/win32u.spec      |  2 +-
 dlls/win32u/win32u_private.h |  1 +
 dlls/win32u/wrappers.c       |  5 +++++
 include/ntuser.h             |  1 +
 8 files changed, 38 insertions(+), 31 deletions(-)

diff --git a/dlls/user32/clipboard.c b/dlls/user32/clipboard.c
index 8b00fcf5c9e..df5b40366c1 100644
--- a/dlls/user32/clipboard.c
+++ b/dlls/user32/clipboard.c
@@ -901,35 +901,6 @@ UINT WINAPI EnumClipboardFormats( UINT format )
 }
 
 
-/**************************************************************************
- *		GetUpdatedClipboardFormats (USER32.@)
- */
-BOOL WINAPI GetUpdatedClipboardFormats( UINT *formats, UINT size, UINT *out_size )
-{
-    BOOL ret;
-
-    if (!out_size)
-    {
-        SetLastError( ERROR_NOACCESS );
-        return FALSE;
-    }
-
-    USER_Driver->pUpdateClipboard();
-
-    SERVER_START_REQ( get_clipboard_formats )
-    {
-        if (formats) wine_server_set_reply( req, formats, size * sizeof(*formats) );
-        ret = !wine_server_call_err( req );
-        *out_size = reply->count;
-    }
-    SERVER_END_REQ;
-
-    TRACE( "%p %u returning %u formats, ret %u\n", formats, size, *out_size, ret );
-    if (!ret && !formats && *out_size) SetLastError( ERROR_NOACCESS );
-    return ret;
-}
-
-
 /**************************************************************************
  *		GetClipboardData (USER32.@)
  */
diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec
index c464664e581..f9b6c18848c 100644
--- a/dlls/user32/user32.spec
+++ b/dlls/user32/user32.spec
@@ -394,7 +394,7 @@
 @ stdcall GetTouchInputInfo(long long ptr long)
 @ stdcall GetUpdateRect(long ptr long)
 @ stdcall GetUpdateRgn(long long long)
-@ stdcall GetUpdatedClipboardFormats(ptr long ptr)
+@ stdcall GetUpdatedClipboardFormats(ptr long ptr) NtUserGetUpdatedClipboardFormats
 @ stdcall GetUserObjectInformationA (long long ptr long ptr)
 @ stdcall GetUserObjectInformationW (long long ptr long ptr) NtUserGetObjectInformation
 @ stdcall GetUserObjectSecurity (long ptr ptr long ptr)
diff --git a/dlls/win32u/clipboard.c b/dlls/win32u/clipboard.c
index d592e007a6e..cddf3885282 100644
--- a/dlls/win32u/clipboard.c
+++ b/dlls/win32u/clipboard.c
@@ -116,6 +116,34 @@ BOOL WINAPI NtUserIsClipboardFormatAvailable( UINT format )
     return ret;
 }
 
+/**************************************************************************
+ *	     NtUserGetUpdatedClipboardFormats    (win32u.@)
+ */
+BOOL WINAPI NtUserGetUpdatedClipboardFormats( UINT *formats, UINT size, UINT *out_size )
+{
+    BOOL ret;
+
+    if (!out_size)
+    {
+        SetLastError( ERROR_NOACCESS );
+        return FALSE;
+    }
+
+    user_driver->pUpdateClipboard();
+
+    SERVER_START_REQ( get_clipboard_formats )
+    {
+        if (formats) wine_server_set_reply( req, formats, size * sizeof(*formats) );
+        ret = !wine_server_call_err( req );
+        *out_size = reply->count;
+    }
+    SERVER_END_REQ;
+
+    TRACE( "%p %u returning %u formats, ret %u\n", formats, size, *out_size, ret );
+    if (!ret && !formats && *out_size) SetLastError( ERROR_NOACCESS );
+    return ret;
+}
+
 /**************************************************************************
  *	     NtUserGetClipboardFormatName    (win32u.@)
  */
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c
index 005bd5af165..f91f8d57059 100644
--- a/dlls/win32u/gdiobj.c
+++ b/dlls/win32u/gdiobj.c
@@ -1168,6 +1168,7 @@ static struct unix_funcs unix_funcs =
     NtGdiUpdateColors,
     NtGdiWidenPath,
     NtUserCountClipboardFormats,
+    NtUserGetUpdatedClipboardFormats,
     NtUserIsClipboardFormatAvailable,
 
     GDIRealizePalette,
diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec
index 9c98aa645b9..870a6cda9a1 100644
--- a/dlls/win32u/win32u.spec
+++ b/dlls/win32u/win32u.spec
@@ -1004,7 +1004,7 @@
 @ stub NtUserGetUniformSpaceMapping
 @ stub NtUserGetUpdateRect
 @ stub NtUserGetUpdateRgn
-@ stub NtUserGetUpdatedClipboardFormats
+@ stdcall NtUserGetUpdatedClipboardFormats(ptr long ptr)
 @ stub NtUserGetWOWClass
 @ stub NtUserGetWindowBand
 @ stub NtUserGetWindowCompositionAttribute
diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h
index 71a9909cfba..00fec65427f 100644
--- a/dlls/win32u/win32u_private.h
+++ b/dlls/win32u/win32u_private.h
@@ -195,6 +195,7 @@ struct unix_funcs
     BOOL     (WINAPI *pNtGdiUpdateColors)( HDC hdc );
     BOOL     (WINAPI *pNtGdiWidenPath)( HDC hdc );
     INT      (WINAPI *pNtUserCountClipboardFormats)(void);
+    BOOL     (WINAPI *pNtUserGetUpdatedClipboardFormats)( UINT *formats, UINT size, UINT *out_size );
     BOOL     (WINAPI *pNtUserIsClipboardFormatAvailable)( UINT format );
 
     /* Wine-specific functions */
diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c
index 50f000bdb3c..18949db3e43 100644
--- a/dlls/win32u/wrappers.c
+++ b/dlls/win32u/wrappers.c
@@ -601,6 +601,11 @@ INT WINAPI NtUserCountClipboardFormats(void)
     return unix_funcs->pNtUserCountClipboardFormats();
 }
 
+BOOL WINAPI NtUserGetUpdatedClipboardFormats( UINT *formats, UINT size, UINT *out_size )
+{
+    return unix_funcs->pNtUserGetUpdatedClipboardFormats( formats, size, out_size );
+}
+
 BOOL WINAPI NtUserIsClipboardFormatAvailable( UINT format )
 {
     return unix_funcs->pNtUserIsClipboardFormatAvailable( format );
diff --git a/include/ntuser.h b/include/ntuser.h
index 0fed1368acf..53bbd85b173 100644
--- a/include/ntuser.h
+++ b/include/ntuser.h
@@ -40,6 +40,7 @@ BOOL    WINAPI NtUserGetObjectInformation( HANDLE handle, INT index, void *info,
 HWINSTA WINAPI NtUserGetProcessWindowStation(void);
 HANDLE  WINAPI NtUserGetProp( HWND hwnd, const WCHAR *str );
 HDESK   WINAPI NtUserGetThreadDesktop( DWORD thread );
+BOOL    WINAPI NtUserGetUpdatedClipboardFormats( UINT *formats, UINT size, UINT *out_size );
 BOOL    WINAPI NtUserIsClipboardFormatAvailable( UINT format );
 HWINSTA WINAPI NtUserOpenWindowStation( OBJECT_ATTRIBUTES *attr, ACCESS_MASK access );
 BOOL    WINAPI NtUserSetObjectInformation( HANDLE handle, INT index, void *info, DWORD len );




More information about the wine-cvs mailing list