diff options
author | Hans de Goede <hdegoede@redhat.com> | 2011-03-26 15:12:16 +0100 |
---|---|---|
committer | Hans de Goede <hdegoede@redhat.com> | 2011-03-28 09:27:46 +0200 |
commit | 2d2ff49500d79e97228c8c8943ab4899e851187f (patch) | |
tree | e21911824364e756ea6533280f58a28a6b1f0520 | |
parent | 3b3ddaad4d4b27b5f171ba06cc59c4b6c4ae136d (diff) |
vdagent-x11: Only move to next element in selection queue on process_next_req
-rw-r--r-- | vdagent-x11.c | 16 |
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) |