[Spice-devel] [spice-gtk v1 1/4] gtk-session: remove extra clipboard selection check
Frediano Ziglio
fziglio at redhat.com
Thu Dec 6 09:30:17 UTC 2018
> Hi,
>
> On Thu, Dec 06, 2018 at 03:54:41AM -0500, Frediano Ziglio wrote:
> > >
> > > From: Victor Toso <me at victortoso.com>
> > >
> > > Commit 284c1f2d switched to
> > > spice_main_channel_clipboard_selection_release() which does check if
> > > agent is connected and does the right thing (expected) in regards to
> > > releasing the clipboard by calling agent_clipboard_release() which
> > > does check VD_AGENT_CAP_CLIPBOARD_SELECTION (like current removed
> > > code).
> > >
> > > So this patch removes redundant check.
> > >
> > > Same goes for spice_main_channel_clipboard_selection_grab() function.
> > >
> > > Signed-off-by: Victor Toso <victortoso at redhat.com>
> >
> > This is not the same. The test in agent_clipboard_grab is done
> > with g_return_if_fail which emits a warning while current code
> > does not.
>
> Which probably should
>
IMHO is the opposite, as we supports agents that does not support
VD_AGENT_CAP_CLIPBOARD_BY_DEMAND why giving warning every time?
If we would like to warn the user that guest is using a very old
agent would not be better to warn once when the capabilities are
received? Maybe if it's really important this could be also done
with a GUI message (maybe with a persistent tick "don't warn
about it next time" like for the exit message).
> > Also spice_main_channel_clipboard_selection_grab always calls
> > spice_channel_wakeup which current code does not.
>
> Which is probably a bug there (should call spice_channel_wakeup
> if message was queued.
>
> What do you think?
>
Not sure if this function is also expected to handle pending
events and what would happen if this is removed.
If it's safe to do so then I would move spice_channel_wakeup
call inside spice_main_channel_clipboard_selection_grab at
the end of agent_clipboard_grab (which is only called by
spice_main_channel_clipboard_selection_grab).
> > > ---
> > > src/spice-gtk-session.c | 7 ++-----
> > > 1 file changed, 2 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/src/spice-gtk-session.c b/src/spice-gtk-session.c
> > > index 20a4060..8d31045 100644
> > > --- a/src/spice-gtk-session.c
> > > +++ b/src/spice-gtk-session.c
> > > @@ -610,9 +610,7 @@ static void clipboard_get_targets(GtkClipboard
> > > *clipboard,
> > > }
> > >
> > > s->clip_grabbed[selection] = TRUE;
> > > -
> > > - if (spice_main_channel_agent_test_capability(s->main,
> > > VD_AGENT_CAP_CLIPBOARD_BY_DEMAND))
> > > - spice_main_channel_clipboard_selection_grab(s->main, selection,
> > > types, num_types);
> > > + spice_main_channel_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;
> > > @@ -636,8 +634,7 @@ static void clipboard_owner_change(GtkClipboard
> > > *clipboard,
> > >
> > > if (s->clip_grabbed[selection]) {
> > > s->clip_grabbed[selection] = FALSE;
> > > - if (spice_main_channel_agent_test_capability(s->main,
> > > VD_AGENT_CAP_CLIPBOARD_BY_DEMAND))
> > > - spice_main_channel_clipboard_selection_release(s->main,
> > > selection);
> > > + spice_main_channel_clipboard_selection_release(s->main,
> > > selection);
> > > }
> > >
> > > switch (event->reason) {
> >
> > Frediano
>
More information about the Spice-devel
mailing list