Merge branch 'master' into f18
This commit is contained in:
commit
5314e227e9
@ -0,0 +1,49 @@
|
|||||||
|
From 314776eb369ca2e438907795ae030dd743c281fc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel Stone <daniel@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@fooishbar.org>
|
||||||
|
Cc: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Cc: Chase Douglas <chase.douglas@ubuntu.com>
|
||||||
|
Signed-off-by: Peter Hutterer <peter.hutterer@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
|
||||||
|
|
@ -43,7 +43,7 @@
|
|||||||
Summary: X.Org X11 X server
|
Summary: X.Org X11 X server
|
||||||
Name: xorg-x11-server
|
Name: xorg-x11-server
|
||||||
Version: 1.13.0
|
Version: 1.13.0
|
||||||
Release: 14%{?gitdate:.%{gitdate}}%{dist}
|
Release: 15%{?gitdate:.%{gitdate}}%{dist}
|
||||||
URL: http://www.x.org
|
URL: http://www.x.org
|
||||||
License: MIT
|
License: MIT
|
||||||
Group: User Interface/X
|
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
|
# autoconfig: send events
|
||||||
Patch7067: 0001-autoconfig-fixup-tell-changed-so-randr-clients-can-t.patch
|
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 moduledir %{_libdir}/xorg/modules
|
||||||
%global drimoduledir %{_libdir}/dri
|
%global drimoduledir %{_libdir}/dri
|
||||||
%global sdkdir %{_includedir}/xorg
|
%global sdkdir %{_includedir}/xorg
|
||||||
@ -618,6 +620,9 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{xserver_source_dir}
|
%{xserver_source_dir}
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Dec 14 2012 Adam Jackson <ajax@redhat.com> 1.13.0-15
|
||||||
|
- Cherry-pick a fix for selection for TouchBegin from multiple clients
|
||||||
|
|
||||||
* Wed Dec 12 2012 Dave Airlie <airlied@redhat.com> 1.13.0-14
|
* Wed Dec 12 2012 Dave Airlie <airlied@redhat.com> 1.13.0-14
|
||||||
- add events for autoconfig of gpus devices, allow usb devices to notify gnome
|
- add events for autoconfig of gpus devices, allow usb devices to notify gnome
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user