[xorg-x11-server/f17] Set the transformation matrix to the unity matrix to avoid spurious cursor

Peter Hutterer whot at fedoraproject.org
Thu Sep 20 07:44:16 UTC 2012


commit 3757892a9e371af8f4d101c82df1763a8da95f7d
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Thu Sep 20 17:50:03 2012 +1000

    Set the transformation matrix to the unity matrix to avoid spurious cursor
    
      jumps (#852841)

 ...-dix-set-the-device-transformation-matrix.patch |   32 ++++++++++++++++++++
 xorg-x11-server.spec                               |   11 +++++-
 2 files changed, 41 insertions(+), 2 deletions(-)
---
diff --git a/0001-dix-set-the-device-transformation-matrix.patch b/0001-dix-set-the-device-transformation-matrix.patch
new file mode 100644
index 0000000..7a3a398
--- /dev/null
+++ b/0001-dix-set-the-device-transformation-matrix.patch
@@ -0,0 +1,32 @@
+From 171059409177652b9b7af31506dd8ee0e018330d Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer at who-t.net>
+Date: Thu, 20 Sep 2012 01:22:32 +1000
+Subject: [PATCH] dix: set the device transformation matrix
+
+The property handler is registered after setting the property, so
+dev->transform remains as all-zeros. That causes pixman_f_transform_invert()
+to fail (transformAbsolute()) and invert remains as garbage. In some cases,
+this may then cause a cursor jump to 0,0.
+
+Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
+---
+ dix/devices.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/dix/devices.c b/dix/devices.c
+index 46c759c..3cacbeb 100644
+--- a/dix/devices.c
++++ b/dix/devices.c
+@@ -306,6 +306,9 @@ AddInputDevice(ClientPtr client, DeviceProc deviceProc, Bool autoStart)
+     /* unity matrix */
+     memset(transform, 0, sizeof(transform));
+     transform[0] = transform[4] = transform[8] = 1.0f;
++    dev->transform.m[0][0] = 1.0;
++    dev->transform.m[1][1] = 1.0;
++    dev->transform.m[2][2] = 1.0;
+ 
+     XIChangeDeviceProperty(dev, XIGetKnownProperty(XI_PROP_TRANSFORM),
+                            XIGetKnownProperty(XATOM_FLOAT), 32,
+-- 
+1.7.11.2
+
diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec
index 89c7a64..4d5646f 100644
--- a/xorg-x11-server.spec
+++ b/xorg-x11-server.spec
@@ -48,7 +48,7 @@
 Summary:   X.Org X11 X server
 Name:      xorg-x11-server
 Version:   1.12.3
-Release:   1%{?gitdate:.%{gitdate}}%{dist}
+Release:   2%{?gitdate:.%{gitdate}}%{dist}
 URL:       http://www.x.org
 License:   MIT
 Group:     User Interface/X
@@ -112,10 +112,13 @@ Patch7018: xserver-1.12-os-print-newline-after-printing-display-name.patch
 # send keycode/event type for slow keys enable (#816764)
 Patch7020: xserver-1.12-xkb-fill-in-keycode-and-event-type-for-slow-keys-ena.patch
 
+# Bug 852841 - Mouse jumps to edges / corners when using an absolute input
+# device (ie virtual machine usb tablet)
+Patch7021: 0001-dix-set-the-device-transformation-matrix.patch
+
 %define moduledir	%{_libdir}/xorg/modules
 %define drimoduledir	%{_libdir}/dri
 %define sdkdir		%{_includedir}/xorg
-
 %ifarch s390 s390x %{?rhel:ppc ppc64}
 %define with_hw_servers 0
 %else
@@ -581,6 +584,10 @@ rm -rf $RPM_BUILD_ROOT
 %{xserver_source_dir}
 
 %changelog
+* Thu Sep 20 2012 Peter Hutterer <peter.hutterer at redhat.com> 1.12.3-2
+- Set the transformation matrix to the unity matrix to avoid spurious cursor
+  jumps (#852841)
+
 * Mon Aug 20 2012 Peter Hutterer <peter.hutterer at redhat.com> 1.12.3-1
 - xserver 1.12.3
 - Update displayfd newline patch to upstream's version


More information about the scm-commits mailing list