From: Victor Toso <me@xxxxxxxxxxxxxx> As we will not be doing anything in case clipboard is already grabbed Signed-off-by: Victor Toso <victortoso@xxxxxxxxxx> Signed-off-by: Victor Toso <me@xxxxxxxxxxxxxx> --- src/spice-gtk-session.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/spice-gtk-session.c b/src/spice-gtk-session.c index 83eaa3e..5f052ed 100644 --- a/src/spice-gtk-session.c +++ b/src/spice-gtk-session.c @@ -636,6 +636,11 @@ static void clipboard_get_targets(GtkClipboard *clipboard, } } + if (s->clip_grabbed[selection]) { + SPICE_DEBUG("Clipboard is already grabbed, ignoring %d atoms", n_atoms); + return; + } + /* Set all Atoms that matches our current protocol implementation */ num_types = 0; for (a = 0; a < n_atoms; a++) { @@ -666,14 +671,13 @@ static void clipboard_get_targets(GtkClipboard *clipboard, return; } - if (!s->clip_grabbed[selection]) { - s->clip_grabbed[selection] = TRUE; + s->clip_grabbed[selection] = TRUE; - if (spice_main_agent_test_capability(s->main, VD_AGENT_CAP_CLIPBOARD_BY_DEMAND)) - spice_main_clipboard_selection_grab(s->main, selection, types, num_types); - /* Sending a grab causes the agent to do an implicit release */ - s->nclip_targets[selection] = 0; - } + if (spice_main_agent_test_capability(s->main, VD_AGENT_CAP_CLIPBOARD_BY_DEMAND)) + spice_main_clipboard_selection_grab(s->main, selection, types, num_types); + + /* Sending a grab causes the agent to do an implicit release */ + s->nclip_targets[selection] = 0; } static void clipboard_owner_change(GtkClipboard *clipboard, -- 2.13.0 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel