Alexandre Julliard : user32: Merge the AcquireClipboard and EmptyClipboard driver entry points.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Jun 3 09:43:08 CDT 2015


Module: wine
Branch: master
Commit: 070a82e743cbcfd82f211d79b2453a84c7eedec2
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=070a82e743cbcfd82f211d79b2453a84c7eedec2

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Jun  3 16:45:40 2015 +0900

user32: Merge the AcquireClipboard and EmptyClipboard driver entry points.

---

 dlls/user32/clipboard.c           |  4 ----
 dlls/user32/driver.c              | 13 -------------
 dlls/user32/user_private.h        |  1 -
 dlls/winemac.drv/clipboard.c      | 12 +-----------
 dlls/winemac.drv/winemac.drv.spec |  1 -
 dlls/winex11.drv/clipboard.c      | 20 ++++++++------------
 dlls/winex11.drv/window.c         |  3 ++-
 dlls/winex11.drv/winex11.drv.spec |  1 -
 dlls/winex11.drv/x11drv.h         |  2 +-
 9 files changed, 12 insertions(+), 45 deletions(-)

diff --git a/dlls/user32/clipboard.c b/dlls/user32/clipboard.c
index 666acf0..c55b830 100644
--- a/dlls/user32/clipboard.c
+++ b/dlls/user32/clipboard.c
@@ -295,10 +295,6 @@ BOOL WINAPI EmptyClipboard(void)
      * WM_DESTROYCLIPBOARD itself. */
     CLIPBOARD_SetClipboardOwner(cbinfo.hWndOpen);
 
-    /* Acquire the selection. This will notify the previous owner
-     * to clear its cache. */
-    USER_Driver->pAcquireClipboard(cbinfo.hWndOpen);
-
     USER_Driver->pEmptyClipboard();
 
     bCBHasChanged = TRUE;
diff --git a/dlls/user32/driver.c b/dlls/user32/driver.c
index 400d30a..ced8836 100644
--- a/dlls/user32/driver.c
+++ b/dlls/user32/driver.c
@@ -120,7 +120,6 @@ static const USER_DRIVER *load_driver(void)
         GET_USER_FUNC(GetCursorPos);
         GET_USER_FUNC(SetCursorPos);
         GET_USER_FUNC(ClipCursor);
-        GET_USER_FUNC(AcquireClipboard);
         GET_USER_FUNC(EmptyClipboard);
         GET_USER_FUNC(SetClipboardData);
         GET_USER_FUNC(GetClipboardData);
@@ -334,11 +333,6 @@ static BOOL CDECL nulldrv_ClipCursor( LPCRECT clip )
     return FALSE;
 }
 
-static INT CDECL nulldrv_AcquireClipboard( HWND hwnd )
-{
-    return 0;
-}
-
 static BOOL CDECL nulldrv_CountClipboardFormats(void)
 {
     return 0;
@@ -536,7 +530,6 @@ static USER_DRIVER null_driver =
     nulldrv_SetCursorPos,
     nulldrv_ClipCursor,
     /* clipboard functions */
-    nulldrv_AcquireClipboard,
     nulldrv_CountClipboardFormats,
     nulldrv_EmptyClipboard,
     nulldrv_EndClipboardUpdate,
@@ -674,11 +667,6 @@ static BOOL CDECL loaderdrv_ClipCursor( LPCRECT clip )
     return load_driver()->pClipCursor( clip );
 }
 
-static INT CDECL loaderdrv_AcquireClipboard( HWND hwnd )
-{
-    return load_driver()->pAcquireClipboard( hwnd );
-}
-
 static BOOL CDECL loaderdrv_CountClipboardFormats(void)
 {
     return load_driver()->pCountClipboardFormats();
@@ -791,7 +779,6 @@ static USER_DRIVER lazy_load_driver =
     loaderdrv_SetCursorPos,
     loaderdrv_ClipCursor,
     /* clipboard functions */
-    loaderdrv_AcquireClipboard,
     loaderdrv_CountClipboardFormats,
     loaderdrv_EmptyClipboard,
     loaderdrv_EndClipboardUpdate,
diff --git a/dlls/user32/user_private.h b/dlls/user32/user_private.h
index 01b9728..e0c1b43 100644
--- a/dlls/user32/user_private.h
+++ b/dlls/user32/user_private.h
@@ -80,7 +80,6 @@ typedef struct tagUSER_DRIVER {
     BOOL   (CDECL *pSetCursorPos)(INT,INT);
     BOOL   (CDECL *pClipCursor)(LPCRECT);
     /* clipboard functions */
-    INT    (CDECL *pAcquireClipboard)(HWND);                     /* Acquire selection */
     BOOL   (CDECL *pCountClipboardFormats)(void);                /* Count available clipboard formats */
     void   (CDECL *pEmptyClipboard)(void);                       /* Empty clipboard data */
     void   (CDECL *pEndClipboardUpdate)(void);                   /* End clipboard update */
diff --git a/dlls/winemac.drv/clipboard.c b/dlls/winemac.drv/clipboard.c
index 3851d23..97fa80e 100644
--- a/dlls/winemac.drv/clipboard.c
+++ b/dlls/winemac.drv/clipboard.c
@@ -1880,17 +1880,6 @@ static void check_clipboard_ownership(HWND *owner)
 
 
 /**************************************************************************
- *              AcquireClipboard (MACDRV.@)
- */
-int CDECL macdrv_AcquireClipboard(HWND hwnd)
-{
-    TRACE("hwnd %p\n", hwnd);
-    check_clipboard_ownership(NULL);
-    return 0;
-}
-
-
-/**************************************************************************
  *              CountClipboardFormats (MACDRV.@)
  */
 INT CDECL macdrv_CountClipboardFormats(void)
@@ -1955,6 +1944,7 @@ INT CDECL macdrv_CountClipboardFormats(void)
 void CDECL macdrv_EmptyClipboard(void)
 {
     TRACE("()\n");
+    check_clipboard_ownership(NULL);
     macdrv_clear_pasteboard();
 }
 
diff --git a/dlls/winemac.drv/winemac.drv.spec b/dlls/winemac.drv/winemac.drv.spec
index a7dbb30..a97177d 100644
--- a/dlls/winemac.drv/winemac.drv.spec
+++ b/dlls/winemac.drv/winemac.drv.spec
@@ -4,7 +4,6 @@
 
 # USER driver
 
-@ cdecl AcquireClipboard(long) macdrv_AcquireClipboard
 @ cdecl ActivateKeyboardLayout(long long) macdrv_ActivateKeyboardLayout
 @ cdecl Beep() macdrv_Beep
 @ cdecl ChangeDisplaySettingsEx(ptr ptr long long long) macdrv_ChangeDisplaySettingsEx
diff --git a/dlls/winex11.drv/clipboard.c b/dlls/winex11.drv/clipboard.c
index 073e7cb..6c6b3b9 100644
--- a/dlls/winex11.drv/clipboard.c
+++ b/dlls/winex11.drv/clipboard.c
@@ -2924,9 +2924,9 @@ static DWORD WINAPI selection_thread_proc(LPVOID p)
 }
 
 /**************************************************************************
- *		AcquireClipboard (X11DRV.@)
+ *		X11DRV_AcquireClipboard
  */
-int CDECL X11DRV_AcquireClipboard(HWND hWndClipWindow)
+void X11DRV_AcquireClipboard(HWND hWndClipWindow)
 {
     DWORD procid;
     HANDLE selectionThread;
@@ -2953,7 +2953,8 @@ int CDECL X11DRV_AcquireClipboard(HWND hWndClipWindow)
                 GetCurrentThreadId(),
                 GetWindowThreadProcessId(hWndClipWindow, NULL), hWndClipWindow);
 
-            return SendMessageW(hWndClipWindow, WM_X11DRV_ACQUIRE_SELECTION, 0, 0);
+            SendMessageW(hWndClipWindow, WM_X11DRV_ACQUIRE_SELECTION, 0, 0);
+            return;
         }
     }
 
@@ -2966,19 +2967,13 @@ int CDECL X11DRV_AcquireClipboard(HWND hWndClipWindow)
         HANDLE event = CreateEventW(NULL, FALSE, FALSE, NULL);
         selectionThread = CreateThread(NULL, 0, selection_thread_proc, event, 0, NULL);
 
-        if (!selectionThread)
+        if (selectionThread)
         {
-            WARN("Could not start clipboard thread\n");
-            CloseHandle(event);
-            return 0;
+            WaitForSingleObject(event, INFINITE);
+            CloseHandle(selectionThread);
         }
-
-        WaitForSingleObject(event, INFINITE);
         CloseHandle(event);
-        CloseHandle(selectionThread);
     }
-
-    return 1;
 }
 
 
@@ -3005,6 +3000,7 @@ static void empty_clipboard(BOOL keepunowned)
  */
 void CDECL X11DRV_EmptyClipboard(void)
 {
+    X11DRV_AcquireClipboard( GetOpenClipboardWindow() );
     empty_clipboard( FALSE );
 }
 
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 7146cfc..ea37dd7 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -2593,7 +2593,8 @@ LRESULT CDECL X11DRV_WindowMessage( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp )
     switch(msg)
     {
     case WM_X11DRV_ACQUIRE_SELECTION:
-        return X11DRV_AcquireClipboard( hwnd );
+        X11DRV_AcquireClipboard( hwnd );
+        return 0;
     case WM_X11DRV_SET_WIN_REGION:
         if ((data = get_win_data( hwnd )))
         {
diff --git a/dlls/winex11.drv/winex11.drv.spec b/dlls/winex11.drv/winex11.drv.spec
index ce084b5..d9bbebc 100644
--- a/dlls/winex11.drv/winex11.drv.spec
+++ b/dlls/winex11.drv/winex11.drv.spec
@@ -23,7 +23,6 @@
 @ cdecl EnumDisplayMonitors(long ptr ptr long) X11DRV_EnumDisplayMonitors
 @ cdecl EnumDisplaySettingsEx(ptr long ptr long) X11DRV_EnumDisplaySettingsEx
 @ cdecl GetMonitorInfo(long ptr) X11DRV_GetMonitorInfo
-@ cdecl AcquireClipboard(long) X11DRV_AcquireClipboard
 @ cdecl CountClipboardFormats() X11DRV_CountClipboardFormats
 @ cdecl CreateDesktopWindow(long) X11DRV_CreateDesktopWindow
 @ cdecl CreateWindow(long) X11DRV_CreateWindow
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
index da13c6e..213f610 100644
--- a/dlls/winex11.drv/x11drv.h
+++ b/dlls/winex11.drv/x11drv.h
@@ -600,7 +600,7 @@ extern XContext win_data_context DECLSPEC_HIDDEN;
 extern XContext cursor_context DECLSPEC_HIDDEN;
 
 extern void X11DRV_InitClipboard(void) DECLSPEC_HIDDEN;
-extern int CDECL X11DRV_AcquireClipboard(HWND hWndClipWindow) DECLSPEC_HIDDEN;
+extern void X11DRV_AcquireClipboard(HWND hWndClipWindow) DECLSPEC_HIDDEN;
 extern void X11DRV_ResetSelectionOwner(void) DECLSPEC_HIDDEN;
 extern void CDECL X11DRV_SetFocus( HWND hwnd ) DECLSPEC_HIDDEN;
 extern void set_window_cursor( Window window, HCURSOR handle ) DECLSPEC_HIDDEN;




More information about the wine-cvs mailing list