Skip to content
Snippets Groups Projects
Forked from spice / spice-gtk
185 commits behind the upstream repository.
user avatar
Marc-André Lureau authored
On the client side, whenever the grab owner changes (and the clipboard
was previously grabbed), spice-gtk sends a clipboard release followed
immediately by a new grab. But some clipboard managers on the remote
side react to clipboard release events by taking a clipboard grab,
presumably to avoid empty clipboards.

The two grabs, coming from the client and from the remote sides, will
race in both directions, which may confuse the client & remote side,
as both believe the other side is the current grab owner, and thus
further clipboard data requests are likely to fail.

Let's avoid sending a release event when re-grabing.

The race described above may still happen in other rare circunstances,
and will require a protocol change. To avoid the conflict, a discussed
solution could use a clipboard serial number.

Tested with current linux & windows vdagent. Looking at earlier
version of the code, it doesn't seem like subsequent grabs will be
treated as an error.

Signed-off-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
2a75ddb9
History

spice-gtk

A Gtk client and libraries for SPICE remote desktop servers.

Please report bugs at: spice-devel@lists.freedesktop.org

Project content

  • libspice-client-glib-2.0

    Provides glib objects for spice protocol decoding and surface rendering.

    • SpiceSession (see spice-session.h).
    • SpiceChannel (see spice-channel.h).
    • SpiceAudio (see spice-audio.h).
    • Various SpiceChannel (see channel-.h).
  • libspice-client-gtk-3.0

    provides gtk widget to show spice display and accept user input.

    • SpiceDisplay (see spice-widget.h)
  • spicy

    a gtk test client. The recommended client for end user is virt-viewer

  • spicy-screenshot

    Command line tool, connects to spice server and writes out a screen shot.

  • spicy-stats

    Command line tool, connects to spice server and writes out a summary of connection details, amount of bytes transferred...

  • SpiceClientGlib and SpiceClientGtk GObject-introspection modules.

Build dependencies:

  • On Fedora use:
dnf builddep spice-gtk
  • or install:
meson ninja gtk3-devel spice-protocol openssl-devel pulseaudio-libs-devel pixman-devel
gobject-introspection-devel libjpeg-turbo-devel zlib-devel cyrus-sasl-devel gtk-doc
gettext-devel vala vala-tools python3 python3-pyparsing

The GStreamer backend needs:

gstreamer1-devel gstreamer1-plugins-base-devel gstreamer1-plugins-good gstreamer1-plugins-bad-free