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
|
||||
Version: 0.14.0
|
||||
Release: 2%{?dist}
|
||||
Release: 3%{?dist}
|
||||
Summary: Spice protocol header files
|
||||
# Main headers are BSD, controller / foreign menu are LGPL
|
||||
License: BSD and LGPLv2+
|
||||
URL: http://www.spice-space.org/
|
||||
Source0: http://www.spice-space.org/download/releases/%{name}-%{version}.tar.bz2
|
||||
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
|
||||
Header files describing the spice protocol
|
||||
@ -14,7 +22,7 @@ and the para-virtual graphics card QXL.
|
||||
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%autosetup -p1
|
||||
|
||||
%build
|
||||
%configure
|
||||
@ -31,6 +39,9 @@ make DESTDIR=%{buildroot} install
|
||||
|
||||
|
||||
%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
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user