[xorg-x11-drv-evdev] only force relative x/y to exists if we don't have ABS_X/Y (#784391)

Peter Hutterer whot at fedoraproject.org
Wed Jan 25 06:23:36 UTC 2012


commit d61fb7e076aeed2a50d85ce29d07ec340a0ce603
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Jan 25 16:25:07 2012 +1000

    only force relative x/y to exists if we don't have ABS_X/Y (#784391)

 0001-Only-force-REL_X-Y-if-no-ABS_X-Y-exists.patch |   65 ++++++++++++++++++++
 xorg-x11-drv-evdev.spec                            |    9 +++-
 2 files changed, 73 insertions(+), 1 deletions(-)
---
diff --git a/0001-Only-force-REL_X-Y-if-no-ABS_X-Y-exists.patch b/0001-Only-force-REL_X-Y-if-no-ABS_X-Y-exists.patch
new file mode 100644
index 0000000..a042996
--- /dev/null
+++ b/0001-Only-force-REL_X-Y-if-no-ABS_X-Y-exists.patch
@@ -0,0 +1,65 @@
+From 7959e63ecff07a4e0c3e2463b1697739a250a9ec Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer at who-t.net>
+Date: Wed, 25 Jan 2012 16:03:34 +1000
+Subject: [PATCH] Only force REL_X/Y if no ABS_X/Y exists
+
+5c5b2c8db851df7921cedd888222a6630a007fd8 added forced x/y axes if a device
+has any axes of the same mode. This was too broad a brush, some devices have
+a relative wheel but absolute x/y axes and would now get misdetected as
+purely relative device.
+
+Only force relative axes if a device no rel x/y _and_ no abs x/y.
+
+Reproducible: virtual machine with QEMU USB Tablet will stop working
+
+Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
+---
+ src/evdev.c |   18 ++++++++++--------
+ 1 files changed, 10 insertions(+), 8 deletions(-)
+
+diff --git a/src/evdev.c b/src/evdev.c
+index 32fe38b..a6f9a59 100644
+--- a/src/evdev.c
++++ b/src/evdev.c
+@@ -2125,6 +2125,13 @@ EvdevProbe(InputInfoPtr pInfo)
+         }
+     }
+ 
++    for (i = 0; i < ABS_MAX; i++) {
++        if (EvdevBitIsSet(pEvdev->abs_bitmask, i)) {
++            has_abs_axes = TRUE;
++            break;
++        }
++    }
++
+     if (has_rel_axes) {
+         if (EvdevBitIsSet(pEvdev->rel_bitmask, REL_WHEEL) ||
+             EvdevBitIsSet(pEvdev->rel_bitmask, REL_HWHEEL) ||
+@@ -2146,7 +2153,9 @@ EvdevProbe(InputInfoPtr pInfo)
+             if (EvdevBitIsSet(pEvdev->rel_bitmask, REL_X) &&
+                 EvdevBitIsSet(pEvdev->rel_bitmask, REL_Y)) {
+                 xf86IDrvMsg(pInfo, X_PROBED, "Found x and y relative axes\n");
+-            } else
++            } else if (!has_abs_axes ||
++                       !EvdevBitIsSet(pEvdev->abs_bitmask, ABS_X) ||
++                       !EvdevBitIsSet(pEvdev->abs_bitmask, ABS_Y))
+                 EvdevForceXY(pInfo, Relative);
+         } else {
+             xf86IDrvMsg(pInfo, X_INFO, "Relative axes present but ignored.\n");
+@@ -2154,13 +2163,6 @@ EvdevProbe(InputInfoPtr pInfo)
+         }
+     }
+ 
+-    for (i = 0; i < ABS_MAX; i++) {
+-        if (EvdevBitIsSet(pEvdev->abs_bitmask, i)) {
+-            has_abs_axes = TRUE;
+-            break;
+-        }
+-    }
+-
+ #ifdef MULTITOUCH
+     for (i = ABS_MT_SLOT; i < ABS_MAX; i++) {
+         if (EvdevBitIsSet(pEvdev->abs_bitmask, i)) {
+-- 
+1.7.7.5
+
diff --git a/xorg-x11-drv-evdev.spec b/xorg-x11-drv-evdev.spec
index bfcd27c..edfa4b7 100644
--- a/xorg-x11-drv-evdev.spec
+++ b/xorg-x11-drv-evdev.spec
@@ -8,7 +8,7 @@
 Summary:    Xorg X11 evdev input driver
 Name:       xorg-x11-drv-evdev
 Version:    2.6.99.901
-Release:    6%{?gitdate:.%{gitdate}git%{gitversion}}%{dist}
+Release:    7%{?gitdate:.%{gitdate}git%{gitversion}}%{dist}
 URL:        http://www.x.org
 License:    MIT
 Group:      User Interface/X Hardware Support
@@ -21,6 +21,9 @@ Source2:    commitid
 Source0:    ftp://ftp.x.org/pub/individual/driver/%{tarball}-%{version}.tar.bz2
 %endif
 
+# Bug 784391 - 2.6.99.901-5 breaks mouse in F16 KVM guest
+Patch01: 0001-Only-force-REL_X-Y-if-no-ABS_X-Y-exists.patch
+
 ExcludeArch: s390 s390x
 
 BuildRequires: autoconf automake libtool
@@ -38,6 +41,7 @@ X.Org X11 evdev input driver.
 
 %prep
 %setup -q -n %{tarball}-%{?gitdate:%{gitdate}}%{!?gitdate:%{version}}
+%patch01 -p1
 
 %build
 autoreconf -v --install || exit 1
@@ -79,6 +83,9 @@ X.Org X11 evdev input driver development files.
 
 
 %changelog
+* Wed Jan 25 2012 Peter Hutterer <peter.hutterer at redhat.com> 2.6.99.901-7.20120118git9d9c9870c
+- only force relative x/y to exists if we don't have ABS_X/Y (#784391) 
+
 * Mon Jan 23 2012 Peter Hutterer <peter.hutterer at redhat.com> - 2.6.99.901-6.20120118git9d9c9870c
 - ABI rebuild
 


More information about the scm-commits mailing list