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