[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xorg-server: Changes to 'debian-unstable'



 Xi/xiselectev.c  |    9 +++++++--
 debian/changelog |    7 +++++++
 2 files changed, 14 insertions(+), 2 deletions(-)

New commits:
commit 2b1356632de667a7f2d05c7e5e5c659902779746
Author: Julien Cristau <jcristau@debian.org>
Date:   Sun Mar 3 19:14:25 2013 +0100

    Changelog entry

diff --git a/debian/changelog b/debian/changelog
index 228dc7c..f844f77 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+xorg-server (2:1.12.4-6) UNRELEASED; urgency=low
+
+  * Touch: Fix duplicate TouchBegin selection with virtual devices
+    (closes: #696272)
+
+ -- Julien Cristau <jcristau@debian.org>  Sun, 03 Mar 2013 19:13:57 +0100
+
 xorg-server (2:1.12.4-5) unstable; urgency=low
 
   * dmx: don't include dmx-config.h from xdmxconfig (closes: #495816)

commit e603961447cd2ca69aa070db7bdf0d6af8aac759
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Sep 7 18:17:46 2012 +0100

    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>
    Reviewed-by: Chase Douglas <chase.douglas@ubuntu.com>
    (cherry picked from commit 3d2b768efae9936c6929c2bc13c7a1acc074ecd3)
    [jcristau: backport to 1.12.x, tmp vs dummy variable names]
    
    Conflicts:
    	Xi/xiselectev.c

diff --git a/Xi/xiselectev.c b/Xi/xiselectev.c
index 43a67c8..07d3218 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(&dummy, evmask->deviceid, serverClient,
-                                    DixReadAccess);
+                    if (evmask->deviceid == XIAllDevices)
+                        dummy = inputInfo.all_devices;
+                    else if (evmask->deviceid == XIAllMasterDevices)
+                        dummy = inputInfo.all_master_devices;
+                    else
+                        dixLookupDevice(&dummy, evmask->deviceid, serverClient,
+                                        DixReadAccess);
                     if (!dummy)
                         return BadImplementation;       /* this shouldn't happen */
 


Reply to: