[xorg-x11-server] Cherry-pick a fix for selection for TouchBegin from multiple clients
Adam Jackson
ajax at fedoraproject.org
Fri Dec 14 19:30:37 UTC 2012
commit 2f360aa76df244b1cde23f5a9988d78fa7b81344
Author: Adam Jackson <ajax at redhat.com>
Date: Fri Dec 14 14:29:06 2012 -0500
Cherry-pick a fix for selection for TouchBegin from multiple clients
From IRC:
14:07 <Jasper> ajax, airlied: can we backport
http://cgit.freedesktop.org/xorg/xserver/commit/?id=314776eb369ca2e438907795ae030dd743c281fc
to the Fedora X server? It's causing some issues for GTK+ clients.
14:07 <ajax> i don't see why not
...uplicate-TouchBegin-selection-with-virtua.patch | 49 ++++++++++++++++++++
xorg-x11-server.spec | 7 ++-
2 files changed, 55 insertions(+), 1 deletions(-)
---
diff --git a/0001-Touch-Fix-duplicate-TouchBegin-selection-with-virtua.patch b/0001-Touch-Fix-duplicate-TouchBegin-selection-with-virtua.patch
new file mode 100644
index 0000000..591a59a
--- /dev/null
+++ b/0001-Touch-Fix-duplicate-TouchBegin-selection-with-virtua.patch
@@ -0,0 +1,49 @@
+From 314776eb369ca2e438907795ae030dd743c281fc Mon Sep 17 00:00:00 2001
+From: Daniel Stone <daniel at fooishbar.org>
+Date: Fri, 7 Sep 2012 18:30:23 +0100
+Subject: [PATCH] Touch: Fix duplicate TouchBegin selection with virtual
+ devices
+
+Given the following scenario:
+ 1) client A selects for TouchBegin on window W for device D
+ 2) client B selects for TouchBegin on window W for XIAllDevices
+ 3) client C selects for TouchBegin on window W with device E
+
+Step 3 will fail with BadImplementation, because attempting to look up
+XIAllDevices or XIAllMasterDevices with dixLookupDevices doesn't work.
+This should succeed (or, if it was selecting for device D, fail with
+BadAccess as it would be a duplicate selection).
+
+Fix this by performing the appropriate lookup for virtual devices.
+
+Signed-off-by: Daniel Stone <daniel at fooishbar.org>
+Cc: Peter Hutterer <peter.hutterer at who-t.net>
+Cc: Chase Douglas <chase.douglas at ubuntu.com>
+Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
+---
+ Xi/xiselectev.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/Xi/xiselectev.c b/Xi/xiselectev.c
+index 0e45cb8..ab1b624 100644
+--- a/Xi/xiselectev.c
++++ b/Xi/xiselectev.c
+@@ -180,8 +180,13 @@ ProcXISelectEvents(ClientPtr client)
+ if (CLIENT_ID(iclient->resource) == client->index)
+ continue;
+
+- dixLookupDevice(&tmp, evmask->deviceid, serverClient,
+- DixReadAccess);
++ if (evmask->deviceid == XIAllDevices)
++ tmp = inputInfo.all_devices;
++ else if (evmask->deviceid == XIAllMasterDevices)
++ tmp = inputInfo.all_master_devices;
++ else
++ dixLookupDevice(&tmp, evmask->deviceid, serverClient,
++ DixReadAccess);
+ if (!tmp)
+ return BadImplementation; /* this shouldn't happen */
+
+--
+1.8.0.1
+
diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec
index cea4d2d..09216c6 100644
--- a/xorg-x11-server.spec
+++ b/xorg-x11-server.spec
@@ -43,7 +43,7 @@
Summary: X.Org X11 X server
Name: xorg-x11-server
Version: 1.13.0
-Release: 14%{?gitdate:.%{gitdate}}%{dist}
+Release: 15%{?gitdate:.%{gitdate}}%{dist}
URL: http://www.x.org
License: MIT
Group: User Interface/X
@@ -146,6 +146,8 @@ Patch7066: 0001-xf86crtc-don-t-use-display-for-vx-vy-for-gpu-screens.patch
# autoconfig: send events
Patch7067: 0001-autoconfig-fixup-tell-changed-so-randr-clients-can-t.patch
+Patch7068: 0001-Touch-Fix-duplicate-TouchBegin-selection-with-virtua.patch
+
%global moduledir %{_libdir}/xorg/modules
%global drimoduledir %{_libdir}/dri
%global sdkdir %{_includedir}/xorg
@@ -618,6 +620,9 @@ rm -rf $RPM_BUILD_ROOT
%{xserver_source_dir}
%changelog
+* Fri Dec 14 2012 Adam Jackson <ajax at redhat.com> 1.13.0-15
+- Cherry-pick a fix for selection for TouchBegin from multiple clients
+
* Wed Dec 12 2012 Dave Airlie <airlied at redhat.com> 1.13.0-14
- add events for autoconfig of gpus devices, allow usb devices to notify gnome
More information about the scm-commits
mailing list