summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2011-03-26 15:12:16 +0100
committerHans de Goede <hdegoede@redhat.com>2011-03-28 09:27:46 +0200
commit2d2ff49500d79e97228c8c8943ab4899e851187f (patch)
treee21911824364e756ea6533280f58a28a6b1f0520
parent3b3ddaad4d4b27b5f171ba06cc59c4b6c4ae136d (diff)
vdagent-x11: Only move to next element in selection queue on process_next_req
-rw-r--r--vdagent-x11.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/vdagent-x11.c b/vdagent-x11.c
index 9f20b24..5febe71 100644
--- a/vdagent-x11.c
+++ b/vdagent-x11.c
@@ -208,8 +208,13 @@ static void vdagent_x11_set_clipboard_owner(struct vdagent_x11 *x11,
fprintf(x11->errfile,
"selection requests pending on clipboard ownership change, "
"clearing");
- while (x11->selection_request)
+ while (x11->selection_request) {
+ struct vdagent_x11_selection_request *selection_request;
vdagent_x11_send_selection_notify(x11, None, 0);
+ selection_request = x11->selection_request;
+ x11->selection_request = selection_request->next;
+ free(selection_request);
+ }
}
if (x11->clipboard_request_target != None) {
fprintf(x11->errfile,
@@ -710,11 +715,12 @@ static void vdagent_x11_send_selection_notify(struct vdagent_x11 *x11,
XSendEvent(x11->display, event->xselectionrequest.requestor, 0, 0, &res);
XFlush(x11->display);
- selection_request = x11->selection_request;
- x11->selection_request = selection_request->next;
- free(selection_request);
- if (process_next_req)
+ if (process_next_req) {
+ selection_request = x11->selection_request;
+ x11->selection_request = selection_request->next;
+ free(selection_request);
vdagent_x11_handle_selection_request(x11);
+ }
}
static void vdagent_x11_send_targets(struct vdagent_x11 *x11, XEvent *event)