Backport clipboard-race patches for #1755038
This commit is contained in:
parent
81587e3295
commit
685e16c111
@ -0,0 +1,34 @@
|
|||||||
|
From 41973d6df464db0d128ba2d272c305143d73f57a Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>
|
||||||
|
Date: Fri, 22 Mar 2019 14:56:47 +0100
|
||||||
|
Subject: [PATCH 2/3] vdagent: introduce
|
||||||
|
VD_AGENT_CAP_CLIPBOARD_NO_RELEASE_ON_REGRAB
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
This capability means the peer will not send a release event between
|
||||||
|
two subsequent grabs. This helps with interaction issues with
|
||||||
|
clipboard managers which can be worked around by time-based filters at
|
||||||
|
this point. With this capability, there is no need for such filter.
|
||||||
|
|
||||||
|
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
|
||||||
|
---
|
||||||
|
spice/vd_agent.h | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/spice/vd_agent.h b/spice/vd_agent.h
|
||||||
|
index e4e00a8..ad61339 100644
|
||||||
|
--- a/spice/vd_agent.h
|
||||||
|
+++ b/spice/vd_agent.h
|
||||||
|
@@ -309,6 +309,7 @@ enum {
|
||||||
|
VD_AGENT_CAP_FILE_XFER_DISABLED,
|
||||||
|
VD_AGENT_CAP_FILE_XFER_DETAILED_ERRORS,
|
||||||
|
VD_AGENT_CAP_GRAPHICS_DEVICE_INFO,
|
||||||
|
+ VD_AGENT_CAP_CLIPBOARD_NO_RELEASE_ON_REGRAB,
|
||||||
|
VD_AGENT_END_CAP,
|
||||||
|
};
|
||||||
|
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
@ -0,0 +1,68 @@
|
|||||||
|
From e8a2b9ec5a0ed46a06c9e28a0099b2a2516f710e Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>
|
||||||
|
Date: Fri, 22 Mar 2019 14:56:48 +0100
|
||||||
|
Subject: [PATCH 3/3] vdagent: introduce VD_AGENT_CAP_CLIPBOARD_GRAB_SERIAL
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
When this capability is negoticated by both the client & the agent,
|
||||||
|
the clipboard grab messages have an associated serial counter.
|
||||||
|
|
||||||
|
The serial is reset to 0 upon client connection.
|
||||||
|
|
||||||
|
The counter is increment by 1 on each grab message, by both sides.
|
||||||
|
|
||||||
|
The sender of the message with the highest serial should be the
|
||||||
|
clipboard grab owner, and the current session serial should be
|
||||||
|
updated.
|
||||||
|
|
||||||
|
If a lower serial than the current session serial is received, the
|
||||||
|
grab should be discarded.
|
||||||
|
|
||||||
|
Whenever two grabs share the same serial, the one coming from the
|
||||||
|
client should have a higher priority and the client should gain the
|
||||||
|
clipboard ownership.
|
||||||
|
|
||||||
|
No special treatement is done for the unlikely case of overflowing the
|
||||||
|
counter. It may temporarily inverse the priority, until both side have
|
||||||
|
overflown and/or synchronized.
|
||||||
|
|
||||||
|
Note: this mechanism isn't aiming at making "the most recent" (as in
|
||||||
|
time) side gaining the ownership. One side sending subsequent grab
|
||||||
|
messages earlier will likely take the ownership over a side sending a
|
||||||
|
single message simultaneously the other way. It only clears the
|
||||||
|
situation where both side believe that the other is the current
|
||||||
|
clipboard owner, by having a global ordering and priority in case of
|
||||||
|
serial conflict.
|
||||||
|
|
||||||
|
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
|
||||||
|
---
|
||||||
|
spice/vd_agent.h | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/spice/vd_agent.h b/spice/vd_agent.h
|
||||||
|
index ad61339..07673d7 100644
|
||||||
|
--- a/spice/vd_agent.h
|
||||||
|
+++ b/spice/vd_agent.h
|
||||||
|
@@ -237,6 +237,9 @@ typedef struct SPICE_ATTR_PACKED VDAgentClipboardGrab {
|
||||||
|
#if 0 /* VD_AGENT_CAP_CLIPBOARD_SELECTION */
|
||||||
|
uint8_t selection;
|
||||||
|
uint8_t __reserved[sizeof(uint32_t) - 1 * sizeof(uint8_t)];
|
||||||
|
+#endif
|
||||||
|
+#if 0 /* VD_AGENT_CAP_CLIPBOARD_GRAB_SERIAL */
|
||||||
|
+ uint32_t serial;
|
||||||
|
#endif
|
||||||
|
uint32_t types[0];
|
||||||
|
} VDAgentClipboardGrab;
|
||||||
|
@@ -310,6 +313,7 @@ enum {
|
||||||
|
VD_AGENT_CAP_FILE_XFER_DETAILED_ERRORS,
|
||||||
|
VD_AGENT_CAP_GRAPHICS_DEVICE_INFO,
|
||||||
|
VD_AGENT_CAP_CLIPBOARD_NO_RELEASE_ON_REGRAB,
|
||||||
|
+ VD_AGENT_CAP_CLIPBOARD_GRAB_SERIAL,
|
||||||
|
VD_AGENT_END_CAP,
|
||||||
|
};
|
||||||
|
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
@ -1,12 +1,20 @@
|
|||||||
Name: spice-protocol
|
Name: spice-protocol
|
||||||
Version: 0.14.0
|
Version: 0.14.0
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
Summary: Spice protocol header files
|
Summary: Spice protocol header files
|
||||||
# Main headers are BSD, controller / foreign menu are LGPL
|
# Main headers are BSD, controller / foreign menu are LGPL
|
||||||
License: BSD and LGPLv2+
|
License: BSD and LGPLv2+
|
||||||
URL: http://www.spice-space.org/
|
URL: http://www.spice-space.org/
|
||||||
Source0: http://www.spice-space.org/download/releases/%{name}-%{version}.tar.bz2
|
Source0: http://www.spice-space.org/download/releases/%{name}-%{version}.tar.bz2
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
|
# clipboard-race patches: together with patches for vdagent
|
||||||
|
# and spice-gtk these fix problems interacting with mutter's new
|
||||||
|
# clipboard manager
|
||||||
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1755038
|
||||||
|
# https://patchwork.freedesktop.org/patch/293583/
|
||||||
|
Patch0: 0002-vdagent-introduce-VD_AGENT_CAP_CLIPBOARD_NO_RELEASE_.patch
|
||||||
|
# https://patchwork.freedesktop.org/patch/293584/
|
||||||
|
Patch1: 0003-vdagent-introduce-VD_AGENT_CAP_CLIPBOARD_GRAB_SERIAL.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Header files describing the spice protocol
|
Header files describing the spice protocol
|
||||||
@ -14,7 +22,7 @@ and the para-virtual graphics card QXL.
|
|||||||
|
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%autosetup -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%configure
|
%configure
|
||||||
@ -31,6 +39,9 @@ make DESTDIR=%{buildroot} install
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Oct 04 2019 Adam Williamson <awilliam@redhat.com> - 0.14.0-3
|
||||||
|
- Backport clipboard-race patches for #1755038
|
||||||
|
|
||||||
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.14.0-2
|
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.14.0-2
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user