From 2f360aa76df244b1cde23f5a9988d78fa7b81344 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 14 Dec 2012 14:29:06 -0500 Subject: [PATCH] Cherry-pick a fix for selection for TouchBegin from multiple clients From IRC: 14:07 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 i don't see why not --- ...ate-TouchBegin-selection-with-virtua.patch | 49 +++++++++++++++++++ xorg-x11-server.spec | 7 ++- 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 0001-Touch-Fix-duplicate-TouchBegin-selection-with-virtua.patch 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 +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 +Cc: Peter Hutterer +Cc: Chase Douglas +Signed-off-by: Peter Hutterer +--- + 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 1.13.0-15 +- Cherry-pick a fix for selection for TouchBegin from multiple clients + * Wed Dec 12 2012 Dave Airlie 1.13.0-14 - add events for autoconfig of gpus devices, allow usb devices to notify gnome