Alexandre Julliard : winex11: Remove unnecessary CLIPBOARDINFO structure.

Alexandre Julliard julliard at wine.codeweavers.com
Mon May 4 07:58:53 CDT 2015


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon May  4 18:30:39 2015 +0900

winex11: Remove unnecessary CLIPBOARDINFO structure.

---

 dlls/winex11.drv/clipboard.c | 111 +++++++++++++------------------------------
 1 file changed, 33 insertions(+), 78 deletions(-)

diff --git a/dlls/winex11.drv/clipboard.c b/dlls/winex11.drv/clipboard.c
index 96b7878..a460e0a 100644
--- a/dlls/winex11.drv/clipboard.c
+++ b/dlls/winex11.drv/clipboard.c
@@ -99,15 +99,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(clipboard);
 #define S_PRIMARY        1
 #define S_CLIPBOARD      2
 
-typedef struct
-{
-    HWND hWndOpen;
-    HWND hWndOwner;
-    HWND hWndViewer;
-    UINT seqno;
-    UINT flags;
-} CLIPBOARDINFO, *LPCLIPBOARDINFO;
-
 struct tagWINE_CLIPDATA; /* Forward */
 
 typedef HANDLE (*DRVEXPORTFUNC)(Display *display, Window requestor, Atom aTarget, Atom rprop,
@@ -168,8 +159,7 @@ static HANDLE X11DRV_CLIPBOARD_ExportHDROP(Display *display, Window requestor, A
 static WINE_CLIPFORMAT *X11DRV_CLIPBOARD_InsertClipboardFormat(UINT id, Atom prop);
 static BOOL X11DRV_CLIPBOARD_RenderSynthesizedText(Display *display, UINT wFormatID);
 static void X11DRV_CLIPBOARD_FreeData(LPWINE_CLIPDATA lpData);
-static BOOL X11DRV_CLIPBOARD_IsSelectionOwner(void);
-static int X11DRV_CLIPBOARD_QueryAvailableData(Display *display, LPCLIPBOARDINFO lpcbinfo);
+static int X11DRV_CLIPBOARD_QueryAvailableData(Display *display);
 static BOOL X11DRV_CLIPBOARD_ReadSelectionData(Display *display, LPWINE_CLIPDATA lpData);
 static BOOL X11DRV_CLIPBOARD_ReadProperty(Display *display, Window w, Atom prop,
     unsigned char** data, unsigned long* datasize);
@@ -483,34 +473,24 @@ static WINE_CLIPFORMAT *X11DRV_CLIPBOARD_InsertClipboardFormat( UINT id, Atom pr
 
 
 /**************************************************************************
- *                      X11DRV_CLIPBOARD_GetClipboardInfo
+ *                      X11DRV_CLIPBOARD_IsProcessOwner
  */
-static BOOL X11DRV_CLIPBOARD_GetClipboardInfo(LPCLIPBOARDINFO cbInfo)
+static BOOL X11DRV_CLIPBOARD_IsProcessOwner( HWND *owner )
 {
-    BOOL bRet = FALSE;
+    BOOL ret = FALSE;
 
     SERVER_START_REQ( set_clipboard_info )
     {
         req->flags = 0;
-
-        if (wine_server_call_err( req ))
+        if (!wine_server_call_err( req ))
         {
-            ERR("Failed to get clipboard owner.\n");
-        }
-        else
-        {
-            cbInfo->hWndOpen = wine_server_ptr_handle( reply->old_clipboard );
-            cbInfo->hWndOwner = wine_server_ptr_handle( reply->old_owner );
-            cbInfo->hWndViewer = wine_server_ptr_handle( reply->old_viewer );
-            cbInfo->seqno = reply->seqno;
-            cbInfo->flags = reply->flags;
-
-            bRet = TRUE;
+            *owner = wine_server_ptr_handle( reply->old_owner );
+            ret = (reply->flags & CB_PROCESS);
         }
     }
     SERVER_END_REQ;
 
-    return bRet;
+    return ret;
 }
 
 
@@ -519,24 +499,16 @@ static BOOL X11DRV_CLIPBOARD_GetClipboardInfo(LPCLIPBOARDINFO cbInfo)
  */
 static BOOL X11DRV_CLIPBOARD_ReleaseOwnership(void)
 {
-    BOOL bRet = FALSE;
+    BOOL ret;
 
     SERVER_START_REQ( set_clipboard_info )
     {
         req->flags = SET_CB_RELOWNER | SET_CB_SEQNO;
-
-        if (wine_server_call_err( req ))
-        {
-            ERR("Failed to set clipboard.\n");
-        }
-        else
-        {
-            bRet = TRUE;
-        }
+        ret = !wine_server_call_err( req );
     }
     SERVER_END_REQ;
 
-    return bRet;
+    return ret;
 }
 
 
@@ -634,22 +606,24 @@ static void X11DRV_CLIPBOARD_FreeData(LPWINE_CLIPDATA lpData)
 /**************************************************************************
  *			X11DRV_CLIPBOARD_UpdateCache
  */
-static BOOL X11DRV_CLIPBOARD_UpdateCache(LPCLIPBOARDINFO lpcbinfo)
+static BOOL X11DRV_CLIPBOARD_UpdateCache(void)
 {
     BOOL bret = TRUE;
 
-    if (!X11DRV_CLIPBOARD_IsSelectionOwner())
+    if (!selectionAcquired)
     {
-        if (!X11DRV_CLIPBOARD_GetClipboardInfo(lpcbinfo))
+        DWORD seqno = GetClipboardSequenceNumber();
+
+        if (!seqno)
         {
             ERR("Failed to retrieve clipboard information.\n");
             bret = FALSE;
         }
-        else if (wSeqNo < lpcbinfo->seqno)
+        else if (wSeqNo < seqno)
         {
             X11DRV_EmptyClipboard(TRUE);
 
-            if (X11DRV_CLIPBOARD_QueryAvailableData(thread_init_display(), lpcbinfo) < 0)
+            if (X11DRV_CLIPBOARD_QueryAvailableData(thread_init_display()) < 0)
             {
                 ERR("Failed to cache clipboard data owned by another process.\n");
                 bret = FALSE;
@@ -659,7 +633,7 @@ static BOOL X11DRV_CLIPBOARD_UpdateCache(LPCLIPBOARDINFO lpcbinfo)
                 X11DRV_EndClipboardUpdate();
             }
 
-            wSeqNo = lpcbinfo->seqno;
+            wSeqNo = seqno;
         }
     }
 
@@ -680,7 +654,7 @@ static BOOL X11DRV_CLIPBOARD_RenderFormat(Display *display, LPWINE_CLIPDATA lpDa
 
     if (lpData->wFlags & CF_FLAG_SYNTHESIZED)
         bret = X11DRV_CLIPBOARD_RenderSynthesizedFormat(display, lpData);
-    else if (!X11DRV_CLIPBOARD_IsSelectionOwner())
+    else if (!selectionAcquired)
     {
         if (!X11DRV_CLIPBOARD_ReadSelectionData(display, lpData))
         {
@@ -691,15 +665,15 @@ static BOOL X11DRV_CLIPBOARD_RenderFormat(Display *display, LPWINE_CLIPDATA lpDa
     }
     else
     {
-        CLIPBOARDINFO cbInfo;
+        HWND owner = GetClipboardOwner();
 
-        if (X11DRV_CLIPBOARD_GetClipboardInfo(&cbInfo) && cbInfo.hWndOwner)
+        if (owner)
         {
             /* Send a WM_RENDERFORMAT message to notify the owner to render the
              * data requested into the clipboard.
              */
-            TRACE("Sending WM_RENDERFORMAT message to hwnd(%p)\n", cbInfo.hWndOwner);
-            SendMessageW(cbInfo.hWndOwner, WM_RENDERFORMAT, lpData->wFormatID, 0);
+            TRACE("Sending WM_RENDERFORMAT message to hwnd(%p)\n", owner);
+            SendMessageW(owner, WM_RENDERFORMAT, lpData->wFormatID, 0);
 
             if (!lpData->hData) bret = FALSE;
         }
@@ -2400,7 +2374,7 @@ static VOID X11DRV_CLIPBOARD_InsertSelectionProperties(Display *display, Atom* p
  * This queries the selection owner for the TARGETS property and saves all
  * reported property types.
  */
-static int X11DRV_CLIPBOARD_QueryAvailableData(Display *display, LPCLIPBOARDINFO lpcbinfo)
+static int X11DRV_CLIPBOARD_QueryAvailableData(Display *display)
 {
     XEvent         xe;
     Atom           atype=AnyPropertyType;
@@ -2841,21 +2815,19 @@ static void X11DRV_CLIPBOARD_ReleaseSelection(Display *display, Atom selType, Wi
 
     if (selectionAcquired && (w == selectionWindow))
     {
-        CLIPBOARDINFO cbinfo;
+        HWND owner;
 
         /* completely give up the selection */
         TRACE("Lost CLIPBOARD (+PRIMARY) selection\n");
 
-        X11DRV_CLIPBOARD_GetClipboardInfo(&cbinfo);
-
-        if (cbinfo.flags & CB_PROCESS)
+        if (X11DRV_CLIPBOARD_IsProcessOwner( &owner ))
         {
             /* Since we're still the owner, this wasn't initiated by
                another Wine process */
             if (OpenClipboard(hwnd))
             {
                 /* Destroy private objects */
-                SendMessageW(cbinfo.hWndOwner, WM_DESTROYCLIPBOARD, 0, 0);
+                SendMessageW(owner, WM_DESTROYCLIPBOARD, 0, 0);
 
                 /* Give up ownership of the windows clipboard */
                 X11DRV_CLIPBOARD_ReleaseOwnership();
@@ -2899,17 +2871,6 @@ static void X11DRV_CLIPBOARD_ReleaseSelection(Display *display, Atom selType, Wi
 
 
 /**************************************************************************
- *		IsSelectionOwner (X11DRV.@)
- *
- * Returns: TRUE if the selection is owned by this process, FALSE otherwise
- */
-static BOOL X11DRV_CLIPBOARD_IsSelectionOwner(void)
-{
-    return selectionAcquired;
-}
-
-
-/**************************************************************************
  *                X11DRV Clipboard Exports
  **************************************************************************/
 
@@ -3056,10 +3017,9 @@ BOOL CDECL X11DRV_SetClipboardData(UINT wFormat, HANDLE hData, BOOL owner)
        and its rendering is not delayed */
     if (!owner)
     {
-        CLIPBOARDINFO cbinfo;
         LPWINE_CLIPDATA lpRender;
 
-        X11DRV_CLIPBOARD_UpdateCache(&cbinfo);
+        X11DRV_CLIPBOARD_UpdateCache();
 
         if (!hData ||
             ((lpRender = X11DRV_CLIPBOARD_LookupData(wFormat)) &&
@@ -3080,9 +3040,7 @@ BOOL CDECL X11DRV_SetClipboardData(UINT wFormat, HANDLE hData, BOOL owner)
  */
 INT CDECL X11DRV_CountClipboardFormats(void)
 {
-    CLIPBOARDINFO cbinfo;
-
-    X11DRV_CLIPBOARD_UpdateCache(&cbinfo);
+    X11DRV_CLIPBOARD_UpdateCache();
 
     TRACE(" count=%d\n", ClipDataCount);
 
@@ -3095,12 +3053,11 @@ INT CDECL X11DRV_CountClipboardFormats(void)
  */
 UINT CDECL X11DRV_EnumClipboardFormats(UINT wFormat)
 {
-    CLIPBOARDINFO cbinfo;
     struct list *ptr = NULL;
 
     TRACE("(%04X)\n", wFormat);
 
-    X11DRV_CLIPBOARD_UpdateCache(&cbinfo);
+    X11DRV_CLIPBOARD_UpdateCache();
 
     if (!wFormat)
     {
@@ -3123,11 +3080,10 @@ UINT CDECL X11DRV_EnumClipboardFormats(UINT wFormat)
 BOOL CDECL X11DRV_IsClipboardFormatAvailable(UINT wFormat)
 {
     BOOL bRet = FALSE;
-    CLIPBOARDINFO cbinfo;
 
     TRACE("(%04X)\n", wFormat);
 
-    X11DRV_CLIPBOARD_UpdateCache(&cbinfo);
+    X11DRV_CLIPBOARD_UpdateCache();
 
     if (wFormat != 0 && X11DRV_CLIPBOARD_LookupData(wFormat))
         bRet = TRUE;
@@ -3143,12 +3099,11 @@ BOOL CDECL X11DRV_IsClipboardFormatAvailable(UINT wFormat)
  */
 HANDLE CDECL X11DRV_GetClipboardData(UINT wFormat)
 {
-    CLIPBOARDINFO cbinfo;
     LPWINE_CLIPDATA lpRender;
 
     TRACE("(%04X)\n", wFormat);
 
-    X11DRV_CLIPBOARD_UpdateCache(&cbinfo);
+    X11DRV_CLIPBOARD_UpdateCache();
 
     if ((lpRender = X11DRV_CLIPBOARD_LookupData(wFormat)))
     {




More information about the wine-cvs mailing list