Hi, On Fri, Feb 24, 2017 at 03:39:16PM +0100, Pavel Grunt wrote: > Hi, > > On Fri, 2017-02-24 at 14:28 +0100, Victor Toso wrote: > > From: Victor Toso <m...@victortoso.com> > > > > This fixes a regression from 7b0de6217670e0f668aff2949f > > > > We need to reply back to the agent all clipboard requests even in > > case > > of failure otherwise it will have a pending request. The following > > error message can be seen afterwards, in the linux agent, when > > client > > sends down some clipboard data: > > > > > clipboard: selection requests pending on clipboard ownership > > > change, clearing > > > > An easy way to reproduce this is: > > 1-) In client, copy image from lo-draw (selection or ctrl+c) > > 2-) In guest, paste it to GEdit (mouse3 our ctrl+v) > > 3-) Move to the client > > 4-) Move back to the guest > > 5-) see error on vdagent logs > > > > The reason for failure is that client's clipboard contains different > > data type (image) then what was requested from guest's editor (text) > > > > While at it, include extra debug message as it might be hard to > > identify why clipboard did not work. > > > > Resolves: rhbz#1409854 > > Signed-off-by: Victor Toso <victort...@redhat.com> > > --- > > src/spice-gtk-session.c | 21 +++++++++++++-------- > > 1 file changed, 13 insertions(+), 8 deletions(-) > > > > diff --git a/src/spice-gtk-session.c b/src/spice-gtk-session.c > > index 0426d8f..3be747e 100644 > > --- a/src/spice-gtk-session.c > > +++ b/src/spice-gtk-session.c > > @@ -936,35 +936,40 @@ static void > > clipboard_received_text_cb(GtkClipboard *clipboard, > > char *conv = NULL; > > int len = 0; > > int selection; > > + const gchar *data = NULL; > I would use const guchar * > > > > > if (self == NULL) > > return; > > > > + selection = get_selection_from_clipboard(self->priv, > > clipboard); > > + g_return_if_fail(selection != -1); > > + > > if (text == NULL) { > > SPICE_DEBUG("Failed to retrieve clipboard text"); > > - return; > > + goto notify_agent; > > } > > > > g_return_if_fail(SPICE_IS_GTK_SESSION(self)); > > > > - selection = get_selection_from_clipboard(self->priv, > > clipboard); > > - g_return_if_fail(selection != -1); > > - > > len = strlen(text); > > if (!check_clipboard_size_limits(self, len)) { > > - return; > > + SPICE_DEBUG("Failed sized limits of clipboard text (%d > typo > > bytes)", len); > > + goto notify_agent; > > } > > > > /* gtk+ internal utf8 newline is always LF, even on windows */ > > conv = fixup_clipboard_text(self, text, &len); > > if (!check_clipboard_size_limits(self, len)) { > > - g_free(conv); > > - return; > > + SPICE_DEBUG("Failed sized limits of clipboard text (%d > typo > > bytes)", len); > > + goto notify_agent; > > } > > > > + data = (conv != NULL) ? conv : text; > > +notify_agent: > > spice_main_clipboard_selection_notify(self->priv->main, > > selection, > > VD_AGENT_CLIPBOARD_UTF8_T > > EXT, > > - (guchar *)(conv ?: text), > > len); > > + (guchar *) data, > > + (data != NULL) ? len : > > 0); > > g_free(conv); > > } > > Besides that Ack,
Hey, many thanks! I'll send the v4 now and wait till next week to push it. The diff between v3 and v4 is https://paste.fedoraproject.org/paste/eNBSe0uMYIvWvbzuIwfzQV5M1UNdIGYhyRLivL9gydE= Cheers, toso > > Pavel > > >
signature.asc
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/spice-devel