Alexandre Julliard : server: Use separate helper functions for setting and resetting clipboard windows.

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


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

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

server: Use separate helper functions for setting and resetting clipboard windows.

---

 server/clipboard.c | 66 +++++++++++++++++++++++++-----------------------------
 1 file changed, 30 insertions(+), 36 deletions(-)

diff --git a/server/clipboard.c b/server/clipboard.c
index 8f26703..7e92121 100644
--- a/server/clipboard.c
+++ b/server/clipboard.c
@@ -135,44 +135,51 @@ void cleanup_clipboard_thread(struct thread *thread)
     release_object( winstation );
 }
 
-static int set_clipboard_window( struct clipboard *clipboard, user_handle_t win, int clear )
+static int open_clipboard( struct clipboard *clipboard, user_handle_t win )
 {
     if (clipboard->open_thread && clipboard->open_thread != current)
     {
         set_error(STATUS_WAS_LOCKED);
         return 0;
     }
-    else if (!clear)
-    {
-        clipboard->open_win = win;
-        clipboard->open_thread = current;
-    }
-    else
+    clipboard->open_win = win;
+    clipboard->open_thread = current;
+    return 1;
+}
+
+static int close_clipboard( struct clipboard *clipboard )
+{
+    if (clipboard->open_thread != current)
     {
-        clipboard->open_thread = NULL;
-        clipboard->open_win = 0;
+        set_win32_error( ERROR_CLIPBOARD_NOT_OPEN );
+        return 0;
     }
+    clipboard->open_thread = NULL;
+    clipboard->open_win = 0;
     return 1;
 }
 
-
-static int set_clipboard_owner( struct clipboard *clipboard, user_handle_t win, int clear )
+static int set_clipboard_owner( struct clipboard *clipboard, user_handle_t win )
 {
     if (clipboard->open_thread && clipboard->open_thread->process != current->process)
     {
         set_error(STATUS_WAS_LOCKED);
         return 0;
     }
-    else if (!clear)
-    {
-        clipboard->owner_win = win;
-        clipboard->owner_thread = current;
-    }
-    else
+    clipboard->owner_win = win;
+    clipboard->owner_thread = current;
+    return 1;
+}
+
+static int release_clipboard_owner( struct clipboard *clipboard )
+{
+    if (clipboard->open_thread && clipboard->open_thread->process != current->process)
     {
-        clipboard->owner_win = 0;
-        clipboard->owner_thread = NULL;
+        set_error(STATUS_WAS_LOCKED);
+        return 0;
     }
+    clipboard->owner_win = 0;
+    clipboard->owner_thread = NULL;
     return 1;
 }
 
@@ -200,33 +207,20 @@ DECL_HANDLER(set_clipboard_info)
 
     if (req->flags & SET_CB_OPEN)
     {
-        if (clipboard->open_thread)
-        {
-            /* clipboard already opened */
-            set_error(STATUS_WAS_LOCKED);
-            return;
-        }
-
-        if (!set_clipboard_window( clipboard, req->clipboard, 0 )) return;
+        if (!open_clipboard( clipboard, req->clipboard )) return;
     }
     else if (req->flags & SET_CB_CLOSE)
     {
-        if (clipboard->open_thread != current)
-        {
-            set_win32_error(ERROR_CLIPBOARD_NOT_OPEN);
-            return;
-        }
-
-        if (!set_clipboard_window( clipboard, 0, 1 )) return;
+        if (!close_clipboard( clipboard )) return;
     }
 
     if (req->flags & SET_CB_OWNER)
     {
-        if (!set_clipboard_owner( clipboard, req->owner, 0 )) return;
+        if (!set_clipboard_owner( clipboard, req->owner )) return;
     }
     else if (req->flags & SET_CB_RELOWNER)
     {
-        if (!set_clipboard_owner( clipboard, 0, 1 )) return;
+        if (!release_clipboard_owner( clipboard )) return;
     }
 
     if (req->flags & SET_CB_VIEWER) clipboard->viewer = req->viewer;




More information about the wine-cvs mailing list