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

xorg-server: Changes to 'ubuntu'



 debian/changelog                                                          |    8 +
 debian/patches/237_dix_save_touchpoint_last_coords_before_transform.patch |   80 ++++++++++
 debian/patches/series                                                     |    1 
 3 files changed, 89 insertions(+)

New commits:
commit 54e8c5a03305cf55ea197a7664ce07c07cea07c5
Author: Bryce Harrington <bryce@canonical.com>
Date:   Tue Jan 22 14:34:20 2013 -0800

    Add 237_dix_save_touchpoint_last_coords_before_transform.patch:
    Fix sensitive touch settings on Nexus 7 when input is transformed.
    (LP: #1075415, #1076567, #1076627)

diff --git a/debian/changelog b/debian/changelog
index 305deba..5605e51 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+xorg-server (2:1.13.1.901-0ubuntu2) raring; urgency=low
+
+  * Add 237_dix_save_touchpoint_last_coords_before_transform.patch:
+    Fix sensitive touch settings on Nexus 7 when input is transformed.
+    (LP: #1075415, #1076567, #1076627)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 22 Jan 2013 13:51:16 -0800
+
 xorg-server (2:1.13.1.901-0ubuntu1) raring; urgency=low
 
   * Merge from unreleased debian git.
diff --git a/debian/patches/237_dix_save_touchpoint_last_coords_before_transform.patch b/debian/patches/237_dix_save_touchpoint_last_coords_before_transform.patch
new file mode 100644
index 0000000..84897d4
--- /dev/null
+++ b/debian/patches/237_dix_save_touchpoint_last_coords_before_transform.patch
@@ -0,0 +1,80 @@
+commit 3b9f1c701787965246638c1a6fd99fb2b6078114
+Author: Yuly Novikov <ynovikov@chromium.org>
+Date:   Mon Nov 19 21:04:57 2012 -0500
+
+    dix: Save touchpoint last coordinates before transform. #49347
+    
+    DDXTouchPointInfoRec.valuators used to store axis values after transform.
+    This resulted in Coordinate Transformation Matrix
+    being applied multiple times to the last coordinates,
+    in the case when only pressure changes in the last touch event.
+    
+    Changed DDXTouchPointInfoRec.valuators to store values before transform.
+    
+    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=49347
+    
+    Signed-off-by: Yuly Novikov <ynovikov@chromium.org>
+    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+# 2012-12-21 - Backport patch to 1.13.0.902
+# Bryce Harrington <bryce@canonical.com>
+
+diff --git a/dix/getevents.c b/dix/getevents.c
+index 8b4379d..58abdba 100644
+--- a/dix/getevents.c
++++ b/dix/getevents.c
+@@ -1951,32 +1951,27 @@ GetTouchEvents(InternalEvent *events, DeviceIntPtr dev, uint32_t ddx_touchid,
+     default:
+         return 0;
+     }
+-    if (t->mode == XIDirectTouch && !(flags & TOUCH_CLIENT_ID)) {
+-        if (!valuator_mask_isset(&mask, 0))
+-            valuator_mask_set_double(&mask, 0,
+-                                     valuator_mask_get_double(touchpoint.ti->
+-                                                              valuators, 0));
+-        if (!valuator_mask_isset(&mask, 1))
+-            valuator_mask_set_double(&mask, 1,
+-                                     valuator_mask_get_double(touchpoint.ti->
+-                                                              valuators, 1));
+-    }
+ 
+     /* Get our screen event co-ordinates (root_x/root_y/event_x/event_y):
+      * these come from the touchpoint in Absolute mode, or the sprite in
+      * Relative. */
+     if (t->mode == XIDirectTouch) {
+-        transformAbsolute(dev, &mask);
+-
+         if (!(flags & TOUCH_CLIENT_ID)) {
+-            for (i = 0; i < valuator_mask_size(&mask); i++) {
++            for (i = 0; i < max(valuator_mask_size(&mask), 2); i++) {
+                 double val;
+ 
+                 if (valuator_mask_fetch_double(&mask, i, &val))
+                     valuator_mask_set_double(touchpoint.ti->valuators, i, val);
++                /* If the device doesn't post new X and Y axis values,
++                 * use the last values posted.
++                 */
++                else if (i < 2 &&
++                    valuator_mask_fetch_double(touchpoint.ti->valuators, i, &val))
++                    valuator_mask_set_double(&mask, i, val);
+             }
+         }
+ 
++        transformAbsolute(dev, &mask);
+         clipAbsolute(dev, &mask);
+     }
+     else {
+diff --git a/include/inputstr.h b/include/inputstr.h
+index 5a38924..bb0a779 100644
+--- a/include/inputstr.h
++++ b/include/inputstr.h
+@@ -331,7 +331,7 @@ typedef struct _DDXTouchPointInfo {
+     uint32_t ddx_id;            /* touch ID given by the DDX */
+     Bool emulate_pointer;
+ 
+-    ValuatorMask *valuators;    /* last recorded axis values */
++    ValuatorMask *valuators;    /* last axis values as posted, pre-transform */
+ } DDXTouchPointInfoRec;
+ 
+ typedef struct _TouchClassRec {
diff --git a/debian/patches/series b/debian/patches/series
index 5ee1be6..b7a346f 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -36,3 +36,4 @@
 500_pointer_barrier_thresholds.diff
 
 ## from upstream, drop when rebasing to a new version
+237_dix_save_touchpoint_last_coords_before_transform.patch


Reply to: