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

xserver-xorg-input-synaptics: Changes to 'ubuntu'



 ChangeLog                                                                     |  130 ++++++++++
 configure.ac                                                                  |    2 
 debian/changelog                                                              |   31 ++
 debian/patches/201-Avoid-out-of-bounds-access-by-running-num_active_tou.patch |   37 --
 debian/patches/202-Ignore-pre-existing-touches.patch                          |   47 ---
 debian/patches/203-Fix-coasting-for-negative-ScrollDelta.patch                |   44 ---
 debian/patches/204-Reset-open-slots-array-on-device-disable.patch             |   34 --
 debian/patches/205-Reset-hw-x-y-to-INT_MIN-and-skip-HandleState-until-w.patch |   78 ------
 debian/patches/206-Don-t-allow-for-scroll-distances-of-0-49965.patch          |   44 ---
 debian/patches/series                                                         |    9 
 src/eventcomm.c                                                               |    5 
 src/properties.c                                                              |    6 
 src/synaptics.c                                                               |   24 +
 src/synproto.c                                                                |    4 
 14 files changed, 193 insertions(+), 302 deletions(-)

New commits:
commit 6d5d3caee239be736098e0c2342d9f7355b1ce5e
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date:   Thu Jun 14 09:42:07 2012 +0200

    Merged from Debian unstable
    
    * Merged from Debian unstable
    * Removed patches that were cherry picked commits and now in 1.6.2:
      - 201-Avoid-out-of-bounds-access-by-running-num_active_tou.patch
      - 202-Ignore-pre-existing-touches.patch
      - 203-Fix-coasting-for-negative-ScrollDelta.patch
      - 204-Reset-open-slots-array-on-device-disable.patch
      - 205-Reset-hw-x-y-to-INT_MIN-and-skip-HandleState-until-w.patch
      - 206-Don-t-allow-for-scroll-distances-of-0-49965.patch
    * Remaining patches:
      - 101_resolution_detect_option.patch
      - 103_enable_cornertapping.patch
      - 104_always_enable_tapping.patch
      - 106_always_enable_vert_edge_scroll.patch
      - 115_evdev_only.patch
      - 118_quell_error_msg.patch
      - 124_syndaemon_events.patch
      - 125_option_rec_revert.patch
      - 126_ubuntu_xi22.patch
      - 128_disable_three_click_action.patch
      - 129_disable_three_touch_tap.patch

diff --git a/debian/changelog b/debian/changelog
index 9f8182c..b63e262 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,28 @@
+xserver-xorg-input-synaptics (1.6.2-1ubuntu1) UNRELEASED; urgency=low
+
+  * Merged from Debian unstable
+  * Removed patches that were cherry picked commits and now in 1.6.2:
+    - 201-Avoid-out-of-bounds-access-by-running-num_active_tou.patch
+    - 202-Ignore-pre-existing-touches.patch
+    - 203-Fix-coasting-for-negative-ScrollDelta.patch
+    - 204-Reset-open-slots-array-on-device-disable.patch
+    - 205-Reset-hw-x-y-to-INT_MIN-and-skip-HandleState-until-w.patch
+    - 206-Don-t-allow-for-scroll-distances-of-0-49965.patch
+  * Remaining patches:
+    - 101_resolution_detect_option.patch
+    - 103_enable_cornertapping.patch
+    - 104_always_enable_tapping.patch
+    - 106_always_enable_vert_edge_scroll.patch
+    - 115_evdev_only.patch
+    - 118_quell_error_msg.patch
+    - 124_syndaemon_events.patch
+    - 125_option_rec_revert.patch
+    - 126_ubuntu_xi22.patch
+    - 128_disable_three_click_action.patch
+    - 129_disable_three_touch_tap.patch
+
+ -- Maarten Lankhorst <maarten.lankhorst@canonical.com>  Thu, 14 Jun 2012 09:35:21 +0200
+
 xserver-xorg-input-synaptics (1.6.2-1) unstable; urgency=low
 
   * New upstream release, from the 1.6 branch.
diff --git a/debian/patches/201-Avoid-out-of-bounds-access-by-running-num_active_tou.patch b/debian/patches/201-Avoid-out-of-bounds-access-by-running-num_active_tou.patch
deleted file mode 100644
index 2aac35f..0000000
--- a/debian/patches/201-Avoid-out-of-bounds-access-by-running-num_active_tou.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 23065a974e5dcdf0d6a436a0547bb7887d306a6f Mon Sep 17 00:00:00 2001
-From: Peter Hutterer <peter.hutterer@who-t.net>
-Date: Fri, 11 May 2012 12:27:39 +1000
-Subject: [PATCH 1/6] Avoid out-of-bounds access by running num_active_touches
- < 0 (#49439)
-
-If a touch is active during driver init, the slot will be set to
-SLOTSTATE_CLOSE when it finishes. That could decrease num_active_touches to
-less than 0, causing out-of-bounds access.
-
-X.Org Bug 49439 <http://bugs.freedesktop.org/show_bug.cgi?id=49439>
-
-Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
-(cherry picked from commit 77d766b1d535dff9a27c7db343ede85d9f44850b)
----
- src/synaptics.c |    4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/synaptics.c b/src/synaptics.c
-index 30d79c5..1d32093 100644
---- a/src/synaptics.c
-+++ b/src/synaptics.c
-@@ -3128,7 +3128,9 @@ UpdateTouchState(InputInfoPtr pInfo, struct SynapticsHwState *hw)
-                     priv->open_slots[j] = priv->open_slots[j + 1];
-             }
- 
--            priv->num_active_touches--;
-+            BUG_WARN(priv->num_active_touches == 0);
-+            if (priv->num_active_touches > 0)
-+                priv->num_active_touches--;
-         }
-     }
- 
--- 
-1.7.9.5
-
diff --git a/debian/patches/202-Ignore-pre-existing-touches.patch b/debian/patches/202-Ignore-pre-existing-touches.patch
deleted file mode 100644
index cd36103..0000000
--- a/debian/patches/202-Ignore-pre-existing-touches.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 23e87b57bb874326c88a7ad7292bec51959fb876 Mon Sep 17 00:00:00 2001
-From: Chase Douglas <chase.douglas@canonical.com>
-Date: Mon, 14 May 2012 10:20:01 -0700
-Subject: [PATCH 2/6] Ignore pre-existing touches
-
-If a touch is physically active when the device is enabled, then all
-events for that touch must be ignored. In particular, we cannot close
-the touch or we will decrement touch count counters below zero. If these
-counters go below zero memory corruption can occur.
-
-Note that a device is disabled and enabled every time the user types on
-the keyboard if synclient is used to disable the trackpad while typing.
-This is a very common option.
-
-Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
-Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-(cherry picked from commit 55fc42e7c9b4948cadd4f98ef7b6a3b12e268e3e)
----
- src/eventcomm.c |    5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/src/eventcomm.c b/src/eventcomm.c
-index 89a8a3a..280ef9b 100644
---- a/src/eventcomm.c
-+++ b/src/eventcomm.c
-@@ -564,8 +564,7 @@ EventProcessTouchEvent(InputInfoPtr pInfo, struct SynapticsHwState *hw,
-         if (slot_index < 0)
-             return;
- 
--        if (hw->slot_state[slot_index] == SLOTSTATE_EMPTY ||
--            hw->slot_state[slot_index] == SLOTSTATE_OPEN_EMPTY)
-+        if (hw->slot_state[slot_index] == SLOTSTATE_OPEN_EMPTY)
-             hw->slot_state[slot_index] = SLOTSTATE_UPDATE;
-         if (ev->code == ABS_MT_TRACKING_ID) {
-             if (ev->value >= 0) {
-@@ -580,7 +579,7 @@ EventProcessTouchEvent(InputInfoPtr pInfo, struct SynapticsHwState *hw,
-                                 "Attempted to copy values from out-of-range "
-                                 "slot, touch events may be incorrect.\n");
-             }
--            else {
-+            else if (hw->slot_state[slot_index] != SLOTSTATE_EMPTY) {
-                 hw->slot_state[slot_index] = SLOTSTATE_CLOSE;
-                 proto_data->num_touches--;
-             }
--- 
-1.7.9.5
-
diff --git a/debian/patches/203-Fix-coasting-for-negative-ScrollDelta.patch b/debian/patches/203-Fix-coasting-for-negative-ScrollDelta.patch
deleted file mode 100644
index b492d8c..0000000
--- a/debian/patches/203-Fix-coasting-for-negative-ScrollDelta.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 67a02d676c96d5b3d4729290cd96af0201eb76bb Mon Sep 17 00:00:00 2001
-From: Chun Yang <Chuck.Yang@gmail.com>
-Date: Tue, 15 May 2012 14:51:42 -0500
-Subject: [PATCH 3/6] Fix coasting for negative ScrollDelta
-
-Fix the coasting direction for when VertScrollDelta or HorizScrollDelta is
-negative.
-
-Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=49966
-
-Regression introduced in 0de4445ff8e75aab208faf6383e76045934c6720
-
-Signed-off-by: Chun Yang <Chuck.Yang@gmail.com>
-Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-(cherry picked from commit 53557a5cab1e253dc8f4393207954ae0fe76068f)
----
- src/synaptics.c |    4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/synaptics.c b/src/synaptics.c
-index 1d32093..074bcb8 100644
---- a/src/synaptics.c
-+++ b/src/synaptics.c
-@@ -2740,7 +2740,7 @@ HandleScrolling(SynapticsPrivate * priv, struct SynapticsHwState *hw,
-         double dtime = (hw->millis - priv->scroll.last_millis) / 1000.0;
-         double ddy = para->coasting_friction * dtime;
- 
--        priv->scroll.delta_y += priv->scroll.coast_speed_y * dtime * para->scroll_dist_vert;
-+        priv->scroll.delta_y += priv->scroll.coast_speed_y * dtime * abs(para->scroll_dist_vert);
-         delay = MIN(delay, POLL_MS);
-         if (abs(priv->scroll.coast_speed_y) < ddy) {
-             priv->scroll.coast_speed_y = 0;
-@@ -2755,7 +2755,7 @@ HandleScrolling(SynapticsPrivate * priv, struct SynapticsHwState *hw,
-     if (priv->scroll.coast_speed_x) {
-         double dtime = (hw->millis - priv->scroll.last_millis) / 1000.0;
-         double ddx = para->coasting_friction * dtime;
--        priv->scroll.delta_x += priv->scroll.coast_speed_x * dtime * para->scroll_dist_vert;
-+        priv->scroll.delta_x += priv->scroll.coast_speed_x * dtime * abs(para->scroll_dist_horiz);
-         delay = MIN(delay, POLL_MS);
-         if (abs(priv->scroll.coast_speed_x) < ddx) {
-             priv->scroll.coast_speed_x = 0;
--- 
-1.7.9.5
-
diff --git a/debian/patches/204-Reset-open-slots-array-on-device-disable.patch b/debian/patches/204-Reset-open-slots-array-on-device-disable.patch
deleted file mode 100644
index b9baee8..0000000
--- a/debian/patches/204-Reset-open-slots-array-on-device-disable.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 739175d198372a3226ce061b118d8fe5bbc8f6bf Mon Sep 17 00:00:00 2001
-From: Chase Douglas <chase.douglas@canonical.com>
-Date: Wed, 16 May 2012 07:49:25 -0700
-Subject: [PATCH 4/6] Reset open slots array on device disable
-
-The open slots array is used for clickpad cumulative delta computation.
-If the array is not reset and becomes corrupted during the device
-disable/enable cycle, the cumulative deltas may be wrong. This manifests
-as jumpy cursor behavior on some clickpads after suspend/resume.
-
-Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
-Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-(cherry picked from commit 0054b144f3daf00e46a35b2f165befb209df94fc)
----
- src/synaptics.c |    3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/src/synaptics.c b/src/synaptics.c
-index 074bcb8..78660f4 100644
---- a/src/synaptics.c
-+++ b/src/synaptics.c
-@@ -1153,6 +1153,9 @@ SynapticsReset(SynapticsPrivate * priv)
-     priv->lastButtons = 0;
-     priv->prev_z = 0;
-     priv->prevFingers = 0;
-+#ifdef HAVE_MULTITOUCH
-+    memset(priv->open_slots, 0, priv->num_slots * sizeof(int));
-+#endif
- }
- 
- static Bool
--- 
-1.7.9.5
-
diff --git a/debian/patches/205-Reset-hw-x-y-to-INT_MIN-and-skip-HandleState-until-w.patch b/debian/patches/205-Reset-hw-x-y-to-INT_MIN-and-skip-HandleState-until-w.patch
deleted file mode 100644
index da104cd..0000000
--- a/debian/patches/205-Reset-hw-x-y-to-INT_MIN-and-skip-HandleState-until-w.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From f8d970e191e6df05a8f2c26afdeea3e27b941a62 Mon Sep 17 00:00:00 2001
-From: Peter Hutterer <peter.hutterer@who-t.net>
-Date: Thu, 17 May 2012 11:02:02 +1000
-Subject: [PATCH 5/6] Reset hw->x/y to INT_MIN and skip HandleState until we
- have x/y events
-
-The driver assumes x/y is always valid but after coming from a resume we may
-get a few events with either ABS_X or ABS_Y (not both). Thus we process with
-hw->x == 0 and hw->y == somevalue, causing cursor jumps when calculating
-deltas whenver the real hw->x comes in.
-
-Fix this by resetting hw->x/y to INT_MIN and skip state processing until
-both axes are available.
-
-For clickpads, this means handling of data will be delayed until we get
-at least one motion on each axis. Button presses won't be recognised either
-until that happens. It requires some skill to not trigger motion on both
-axes, even more to press a button without doing so.
-
-For non-clickpads, handling of motion events will be delayed likewise. If a
-physical button is pressed immediately after resume we have to assume deltas
-of x/y.
-- If the next event is a new touch, it will have ABS_X/ABS_Y set anyway
-- If the finger was already down, a button event is generated, and the
-  finger has generated ABS_X or ABS_Y only before the event, the next event
-  containing the missing data will cause a jump. The fix for this is more
-  invasive and this is quite a corner-case.
-
-Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
-(cherry picked from commit cd569377cda9b5a4ee00c0137db14f625c76c40f)
----
- src/synaptics.c |   13 +++++++++++++
- src/synproto.c  |    4 ++--
- 2 files changed, 15 insertions(+), 2 deletions(-)
-
-diff --git a/src/synaptics.c b/src/synaptics.c
-index 78660f4..cd9f936 100644
---- a/src/synaptics.c
-+++ b/src/synaptics.c
-@@ -3278,6 +3278,19 @@ HandleState(InputInfoPtr pInfo, struct SynapticsHwState *hw, CARD32 now,
-         return delay;
-     }
- 
-+    /* We need both and x/y, the driver can't handle just one of the two
-+     * yet. But since it's possible to hit a phys button on non-clickpads
-+     * without ever getting motion data first, we must continue with 0/0 for
-+     * that case. */
-+    if (hw->x == INT_MIN || hw->y == INT_MAX) {
-+        if (para->clickpad)
-+            return delay;
-+        else if (hw->left || hw->right || hw->middle) {
-+            hw->x = (hw->x == INT_MIN) ? 0 : hw->x;
-+            hw->y = (hw->y == INT_MIN) ? 0 : hw->y;
-+        }
-+    }
-+
-     /* If a physical button is pressed on a clickpad, use cumulative relative
-      * touch movements for motion */
-     if (para->clickpad && (hw->left || hw->right || hw->middle)) {
-diff --git a/src/synproto.c b/src/synproto.c
-index d6e8c65..0c8a066 100644
---- a/src/synproto.c
-+++ b/src/synproto.c
-@@ -134,8 +134,8 @@ void
- SynapticsResetHwState(struct SynapticsHwState *hw)
- {
-     hw->millis = 0;
--    hw->x = 0;
--    hw->y = 0;
-+    hw->x = INT_MIN;
-+    hw->y = INT_MIN;
-     hw->z = 0;
-     hw->cumulative_dx = 0;
-     hw->cumulative_dy = 0;
--- 
-1.7.9.5
-
diff --git a/debian/patches/206-Don-t-allow-for-scroll-distances-of-0-49965.patch b/debian/patches/206-Don-t-allow-for-scroll-distances-of-0-49965.patch
deleted file mode 100644
index ba24320..0000000
--- a/debian/patches/206-Don-t-allow-for-scroll-distances-of-0-49965.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 7ccca8e7d8fbf2ccb5a2dbbfbf06ff4dbd6b7149 Mon Sep 17 00:00:00 2001
-From: Peter Hutterer <peter.hutterer@who-t.net>
-Date: Thu, 17 May 2012 12:10:04 +1000
-Subject: [PATCH 6/6] Don't allow for scroll distances of 0 (#49965)
-
-It'll either hang the server or blow up with divisions by 0, whichever one
-comes first.
-
-X.Org Bug 49965 <http://bugs.freedesktop.org/show_bug.cgi?id=49965>
-
-Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
-(cherry picked from commit 6d47d334d8a876e7e094306c313246b87016b78a)
----
- src/properties.c |    6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/src/properties.c b/src/properties.c
-index 44ac306..3b3f1c5 100644
---- a/src/properties.c
-+++ b/src/properties.c
-@@ -519,6 +519,9 @@ SetProperty(DeviceIntPtr dev, Atom property, XIPropertyValuePtr prop,
-             return BadMatch;
- 
-         dist = (INT32 *) prop->data;
-+        if (dist[0] == 0 || dist[1] == 0)
-+            return BadValue;
-+
-         if (para->scroll_dist_vert != dist[0]) {
-             para->scroll_dist_vert = dist[0];
- #ifdef HAVE_SMOOTH_SCROLL
-@@ -715,6 +718,9 @@ SetProperty(DeviceIntPtr dev, Atom property, XIPropertyValuePtr prop,
-             return BadMatch;
- 
-         circdist = *(float *) prop->data;
-+        if (circdist == 0)
-+            return BadValue;
-+
-         para->scroll_dist_circ = circdist;
-     }
-     else if (property == prop_circscroll_trigger) {
--- 
-1.7.9.5
-
diff --git a/debian/patches/series b/debian/patches/series
index 5a85917..063c319 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -19,12 +19,3 @@
 126_ubuntu_xi22.patch
 128_disable_three_click_action.patch
 129_disable_three_touch_tap.patch
-
-# in synaptics-1.6-branch, scheduled for 1.6.2 release
-201-Avoid-out-of-bounds-access-by-running-num_active_tou.patch
-202-Ignore-pre-existing-touches.patch
-203-Fix-coasting-for-negative-ScrollDelta.patch
-204-Reset-open-slots-array-on-device-disable.patch
-205-Reset-hw-x-y-to-INT_MIN-and-skip-HandleState-until-w.patch
-206-Don-t-allow-for-scroll-distances-of-0-49965.patch
-

commit 1b7a3baa3f8f7c71a3264e50cabf7461afc9d463
Author: Cyril Brulebois <kibi@debian.org>
Date:   Wed Jun 13 22:22:46 2012 +0200

    Upload to unstable.

diff --git a/debian/changelog b/debian/changelog
index 0547378..9801715 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,8 @@
-xserver-xorg-input-synaptics (1.6.2-1) UNRELEASED; urgency=low
+xserver-xorg-input-synaptics (1.6.2-1) unstable; urgency=low
 
   * New upstream release, from the 1.6 branch.
 
- -- Cyril Brulebois <kibi@debian.org>  Wed, 13 Jun 2012 22:21:59 +0200
+ -- Cyril Brulebois <kibi@debian.org>  Wed, 13 Jun 2012 22:22:42 +0200
 
 xserver-xorg-input-synaptics (1.6.1-1) unstable; urgency=low
 

commit f0998d15565eaae5b6189a535d5d584fff071874
Author: Cyril Brulebois <kibi@debian.org>
Date:   Wed Jun 13 22:22:27 2012 +0200

    Bump changelogs.

diff --git a/ChangeLog b/ChangeLog
index 187be52..1c01053 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,133 @@
+commit d5ff9d8b0b186cf39695df84a10984eac559b746
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Tue Jun 12 13:46:34 2012 +1000
+
+    synaptics 1.6.2
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit c1aae820601a911432c64938f03eab62bafaab2f
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Fri May 18 09:38:50 2012 +1000
+
+    synaptics 1.6.1.901
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 7ccca8e7d8fbf2ccb5a2dbbfbf06ff4dbd6b7149
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Thu May 17 12:10:04 2012 +1000
+
+    Don't allow for scroll distances of 0 (#49965)
+    
+    It'll either hang the server or blow up with divisions by 0, whichever one
+    comes first.
+    
+    X.Org Bug 49965 <http://bugs.freedesktop.org/show_bug.cgi?id=49965>
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
+    (cherry picked from commit 6d47d334d8a876e7e094306c313246b87016b78a)
+
+commit f8d970e191e6df05a8f2c26afdeea3e27b941a62
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Thu May 17 11:02:02 2012 +1000
+
+    Reset hw->x/y to INT_MIN and skip HandleState until we have x/y events
+    
+    The driver assumes x/y is always valid but after coming from a resume we may
+    get a few events with either ABS_X or ABS_Y (not both). Thus we process with
+    hw->x == 0 and hw->y == somevalue, causing cursor jumps when calculating
+    deltas whenver the real hw->x comes in.
+    
+    Fix this by resetting hw->x/y to INT_MIN and skip state processing until
+    both axes are available.
+    
+    For clickpads, this means handling of data will be delayed until we get
+    at least one motion on each axis. Button presses won't be recognised either
+    until that happens. It requires some skill to not trigger motion on both
+    axes, even more to press a button without doing so.
+    
+    For non-clickpads, handling of motion events will be delayed likewise. If a
+    physical button is pressed immediately after resume we have to assume deltas
+    of x/y.
+    - If the next event is a new touch, it will have ABS_X/ABS_Y set anyway
+    - If the finger was already down, a button event is generated, and the
+      finger has generated ABS_X or ABS_Y only before the event, the next event
+      containing the missing data will cause a jump. The fix for this is more
+      invasive and this is quite a corner-case.
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
+    (cherry picked from commit cd569377cda9b5a4ee00c0137db14f625c76c40f)
+
+commit 739175d198372a3226ce061b118d8fe5bbc8f6bf
+Author: Chase Douglas <chase.douglas@canonical.com>
+Date:   Wed May 16 07:49:25 2012 -0700
+
+    Reset open slots array on device disable
+    
+    The open slots array is used for clickpad cumulative delta computation.
+    If the array is not reset and becomes corrupted during the device
+    disable/enable cycle, the cumulative deltas may be wrong. This manifests
+    as jumpy cursor behavior on some clickpads after suspend/resume.
+    
+    Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    (cherry picked from commit 0054b144f3daf00e46a35b2f165befb209df94fc)
+
+commit 67a02d676c96d5b3d4729290cd96af0201eb76bb
+Author: Chun Yang <Chuck.Yang@gmail.com>
+Date:   Tue May 15 14:51:42 2012 -0500
+
+    Fix coasting for negative ScrollDelta
+    
+    Fix the coasting direction for when VertScrollDelta or HorizScrollDelta is
+    negative.
+    
+    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=49966
+    
+    Regression introduced in 0de4445ff8e75aab208faf6383e76045934c6720
+    
+    Signed-off-by: Chun Yang <Chuck.Yang@gmail.com>
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    (cherry picked from commit 53557a5cab1e253dc8f4393207954ae0fe76068f)
+
+commit 23e87b57bb874326c88a7ad7292bec51959fb876
+Author: Chase Douglas <chase.douglas@canonical.com>
+Date:   Mon May 14 10:20:01 2012 -0700
+
+    Ignore pre-existing touches
+    
+    If a touch is physically active when the device is enabled, then all
+    events for that touch must be ignored. In particular, we cannot close
+    the touch or we will decrement touch count counters below zero. If these
+    counters go below zero memory corruption can occur.
+    
+    Note that a device is disabled and enabled every time the user types on
+    the keyboard if synclient is used to disable the trackpad while typing.
+    This is a very common option.
+    
+    Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    (cherry picked from commit 55fc42e7c9b4948cadd4f98ef7b6a3b12e268e3e)
+
+commit 23065a974e5dcdf0d6a436a0547bb7887d306a6f
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Fri May 11 12:27:39 2012 +1000
+
+    Avoid out-of-bounds access by running num_active_touches < 0 (#49439)
+    
+    If a touch is active during driver init, the slot will be set to
+    SLOTSTATE_CLOSE when it finishes. That could decrease num_active_touches to
+    less than 0, causing out-of-bounds access.
+    
+    X.Org Bug 49439 <http://bugs.freedesktop.org/show_bug.cgi?id=49439>
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
+    (cherry picked from commit 77d766b1d535dff9a27c7db343ede85d9f44850b)
+
 commit e0f5688994baa85a8c658120681575cdd0ba2a58
 Author: Peter Hutterer <peter.hutterer@who-t.net>
 Date:   Fri May 11 10:30:21 2012 +1000
diff --git a/debian/changelog b/debian/changelog
index 6bd821f..0547378 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+xserver-xorg-input-synaptics (1.6.2-1) UNRELEASED; urgency=low
+
+  * New upstream release, from the 1.6 branch.
+
+ -- Cyril Brulebois <kibi@debian.org>  Wed, 13 Jun 2012 22:21:59 +0200
+
 xserver-xorg-input-synaptics (1.6.1-1) unstable; urgency=low
 
   [ Julien Cristau ]

commit d5ff9d8b0b186cf39695df84a10984eac559b746
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Jun 12 13:46:34 2012 +1000

    synaptics 1.6.2
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/configure.ac b/configure.ac
index 3e7ec2a..894d4f5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ([2.60])
 AC_INIT([xf86-input-synaptics],
-        [1.6.1.901],
+        [1.6.2],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-input-synaptics])
 AC_CONFIG_SRCDIR([Makefile.am])

commit c1aae820601a911432c64938f03eab62bafaab2f
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri May 18 09:38:50 2012 +1000

    synaptics 1.6.1.901
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/configure.ac b/configure.ac
index 565daf2..3e7ec2a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ([2.60])
 AC_INIT([xf86-input-synaptics],
-        [1.6.1],
+        [1.6.1.901],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-input-synaptics])
 AC_CONFIG_SRCDIR([Makefile.am])

commit 7ccca8e7d8fbf2ccb5a2dbbfbf06ff4dbd6b7149
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu May 17 12:10:04 2012 +1000

    Don't allow for scroll distances of 0 (#49965)
    
    It'll either hang the server or blow up with divisions by 0, whichever one
    comes first.
    
    X.Org Bug 49965 <http://bugs.freedesktop.org/show_bug.cgi?id=49965>
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
    (cherry picked from commit 6d47d334d8a876e7e094306c313246b87016b78a)

diff --git a/src/properties.c b/src/properties.c
index 44ac306..3b3f1c5 100644
--- a/src/properties.c
+++ b/src/properties.c
@@ -519,6 +519,9 @@ SetProperty(DeviceIntPtr dev, Atom property, XIPropertyValuePtr prop,
             return BadMatch;
 
         dist = (INT32 *) prop->data;
+        if (dist[0] == 0 || dist[1] == 0)
+            return BadValue;
+
         if (para->scroll_dist_vert != dist[0]) {
             para->scroll_dist_vert = dist[0];
 #ifdef HAVE_SMOOTH_SCROLL
@@ -715,6 +718,9 @@ SetProperty(DeviceIntPtr dev, Atom property, XIPropertyValuePtr prop,
             return BadMatch;
 
         circdist = *(float *) prop->data;
+        if (circdist == 0)
+            return BadValue;
+
         para->scroll_dist_circ = circdist;
     }
     else if (property == prop_circscroll_trigger) {

commit f8d970e191e6df05a8f2c26afdeea3e27b941a62
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu May 17 11:02:02 2012 +1000

    Reset hw->x/y to INT_MIN and skip HandleState until we have x/y events
    
    The driver assumes x/y is always valid but after coming from a resume we may
    get a few events with either ABS_X or ABS_Y (not both). Thus we process with
    hw->x == 0 and hw->y == somevalue, causing cursor jumps when calculating
    deltas whenver the real hw->x comes in.
    
    Fix this by resetting hw->x/y to INT_MIN and skip state processing until
    both axes are available.
    
    For clickpads, this means handling of data will be delayed until we get
    at least one motion on each axis. Button presses won't be recognised either
    until that happens. It requires some skill to not trigger motion on both
    axes, even more to press a button without doing so.
    
    For non-clickpads, handling of motion events will be delayed likewise. If a
    physical button is pressed immediately after resume we have to assume deltas
    of x/y.
    - If the next event is a new touch, it will have ABS_X/ABS_Y set anyway
    - If the finger was already down, a button event is generated, and the
      finger has generated ABS_X or ABS_Y only before the event, the next event
      containing the missing data will cause a jump. The fix for this is more
      invasive and this is quite a corner-case.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
    (cherry picked from commit cd569377cda9b5a4ee00c0137db14f625c76c40f)

diff --git a/src/synaptics.c b/src/synaptics.c
index 78660f4..cd9f936 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -3278,6 +3278,19 @@ HandleState(InputInfoPtr pInfo, struct SynapticsHwState *hw, CARD32 now,
         return delay;
     }
 
+    /* We need both and x/y, the driver can't handle just one of the two
+     * yet. But since it's possible to hit a phys button on non-clickpads
+     * without ever getting motion data first, we must continue with 0/0 for
+     * that case. */
+    if (hw->x == INT_MIN || hw->y == INT_MAX) {
+        if (para->clickpad)
+            return delay;
+        else if (hw->left || hw->right || hw->middle) {
+            hw->x = (hw->x == INT_MIN) ? 0 : hw->x;
+            hw->y = (hw->y == INT_MIN) ? 0 : hw->y;
+        }
+    }
+
     /* If a physical button is pressed on a clickpad, use cumulative relative
      * touch movements for motion */
     if (para->clickpad && (hw->left || hw->right || hw->middle)) {
diff --git a/src/synproto.c b/src/synproto.c
index d6e8c65..0c8a066 100644
--- a/src/synproto.c
+++ b/src/synproto.c
@@ -134,8 +134,8 @@ void
 SynapticsResetHwState(struct SynapticsHwState *hw)
 {
     hw->millis = 0;
-    hw->x = 0;
-    hw->y = 0;
+    hw->x = INT_MIN;
+    hw->y = INT_MIN;
     hw->z = 0;
     hw->cumulative_dx = 0;
     hw->cumulative_dy = 0;

commit 739175d198372a3226ce061b118d8fe5bbc8f6bf
Author: Chase Douglas <chase.douglas@canonical.com>
Date:   Wed May 16 07:49:25 2012 -0700

    Reset open slots array on device disable
    
    The open slots array is used for clickpad cumulative delta computation.
    If the array is not reset and becomes corrupted during the device
    disable/enable cycle, the cumulative deltas may be wrong. This manifests
    as jumpy cursor behavior on some clickpads after suspend/resume.
    
    Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit 0054b144f3daf00e46a35b2f165befb209df94fc)

diff --git a/src/synaptics.c b/src/synaptics.c
index 074bcb8..78660f4 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -1153,6 +1153,9 @@ SynapticsReset(SynapticsPrivate * priv)
     priv->lastButtons = 0;
     priv->prev_z = 0;
     priv->prevFingers = 0;
+#ifdef HAVE_MULTITOUCH
+    memset(priv->open_slots, 0, priv->num_slots * sizeof(int));
+#endif
 }
 
 static Bool

commit 67a02d676c96d5b3d4729290cd96af0201eb76bb
Author: Chun Yang <Chuck.Yang@gmail.com>
Date:   Tue May 15 14:51:42 2012 -0500

    Fix coasting for negative ScrollDelta
    
    Fix the coasting direction for when VertScrollDelta or HorizScrollDelta is
    negative.
    
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=49966
    
    Regression introduced in 0de4445ff8e75aab208faf6383e76045934c6720
    
    Signed-off-by: Chun Yang <Chuck.Yang@gmail.com>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit 53557a5cab1e253dc8f4393207954ae0fe76068f)

diff --git a/src/synaptics.c b/src/synaptics.c
index 1d32093..074bcb8 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -2740,7 +2740,7 @@ HandleScrolling(SynapticsPrivate * priv, struct SynapticsHwState *hw,
         double dtime = (hw->millis - priv->scroll.last_millis) / 1000.0;
         double ddy = para->coasting_friction * dtime;
 
-        priv->scroll.delta_y += priv->scroll.coast_speed_y * dtime * para->scroll_dist_vert;
+        priv->scroll.delta_y += priv->scroll.coast_speed_y * dtime * abs(para->scroll_dist_vert);
         delay = MIN(delay, POLL_MS);
         if (abs(priv->scroll.coast_speed_y) < ddy) {
             priv->scroll.coast_speed_y = 0;
@@ -2755,7 +2755,7 @@ HandleScrolling(SynapticsPrivate * priv, struct SynapticsHwState *hw,
     if (priv->scroll.coast_speed_x) {
         double dtime = (hw->millis - priv->scroll.last_millis) / 1000.0;
         double ddx = para->coasting_friction * dtime;
-        priv->scroll.delta_x += priv->scroll.coast_speed_x * dtime * para->scroll_dist_vert;
+        priv->scroll.delta_x += priv->scroll.coast_speed_x * dtime * abs(para->scroll_dist_horiz);
         delay = MIN(delay, POLL_MS);
         if (abs(priv->scroll.coast_speed_x) < ddx) {
             priv->scroll.coast_speed_x = 0;

commit 23e87b57bb874326c88a7ad7292bec51959fb876
Author: Chase Douglas <chase.douglas@canonical.com>
Date:   Mon May 14 10:20:01 2012 -0700

    Ignore pre-existing touches
    
    If a touch is physically active when the device is enabled, then all
    events for that touch must be ignored. In particular, we cannot close
    the touch or we will decrement touch count counters below zero. If these
    counters go below zero memory corruption can occur.
    
    Note that a device is disabled and enabled every time the user types on
    the keyboard if synclient is used to disable the trackpad while typing.
    This is a very common option.
    
    Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit 55fc42e7c9b4948cadd4f98ef7b6a3b12e268e3e)

diff --git a/src/eventcomm.c b/src/eventcomm.c
index 89a8a3a..280ef9b 100644
--- a/src/eventcomm.c
+++ b/src/eventcomm.c
@@ -564,8 +564,7 @@ EventProcessTouchEvent(InputInfoPtr pInfo, struct SynapticsHwState *hw,
         if (slot_index < 0)
             return;
 
-        if (hw->slot_state[slot_index] == SLOTSTATE_EMPTY ||
-            hw->slot_state[slot_index] == SLOTSTATE_OPEN_EMPTY)
+        if (hw->slot_state[slot_index] == SLOTSTATE_OPEN_EMPTY)
             hw->slot_state[slot_index] = SLOTSTATE_UPDATE;
         if (ev->code == ABS_MT_TRACKING_ID) {
             if (ev->value >= 0) {
@@ -580,7 +579,7 @@ EventProcessTouchEvent(InputInfoPtr pInfo, struct SynapticsHwState *hw,
                                 "Attempted to copy values from out-of-range "
                                 "slot, touch events may be incorrect.\n");
             }
-            else {
+            else if (hw->slot_state[slot_index] != SLOTSTATE_EMPTY) {
                 hw->slot_state[slot_index] = SLOTSTATE_CLOSE;
                 proto_data->num_touches--;
             }

commit 23065a974e5dcdf0d6a436a0547bb7887d306a6f
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri May 11 12:27:39 2012 +1000

    Avoid out-of-bounds access by running num_active_touches < 0 (#49439)
    
    If a touch is active during driver init, the slot will be set to
    SLOTSTATE_CLOSE when it finishes. That could decrease num_active_touches to
    less than 0, causing out-of-bounds access.
    
    X.Org Bug 49439 <http://bugs.freedesktop.org/show_bug.cgi?id=49439>
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
    (cherry picked from commit 77d766b1d535dff9a27c7db343ede85d9f44850b)

diff --git a/src/synaptics.c b/src/synaptics.c
index 30d79c5..1d32093 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -3128,7 +3128,9 @@ UpdateTouchState(InputInfoPtr pInfo, struct SynapticsHwState *hw)
                     priv->open_slots[j] = priv->open_slots[j + 1];
             }
 
-            priv->num_active_touches--;
+            BUG_WARN(priv->num_active_touches == 0);
+            if (priv->num_active_touches > 0)
+                priv->num_active_touches--;
         }
     }
 


Reply to: