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> --- 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 2ae512f..798bdcd 100644 --- a/src/spice-gtk-session.c +++ b/src/spice-gtk-session.c @@ -627,6 +627,11 @@ static void clipboard_get_targets(GtkClipboard *clipboard, selection = get_selection_from_clipboard(s, clipboard); g_return_if_fail(selection != -1); + if (s->clip_grabbed[selection]) { + SPICE_DEBUG("Clipboard is already grabbed, ignoring %d atoms", n_atoms); + return; + } + SPICE_DEBUG("%s:", __FUNCTION__); if (spice_util_get_debug()) { for (a = 0; a < n_atoms; a++) { @@ -667,14 +672,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