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: