ChangeLog | 222 + configure.ac | 2 debian/changelog | 108 debian/control | 2 debian/patches/101_resolution_detect_option.patch | 133 - debian/patches/118_quell_error_msg.patch | 42 debian/patches/124_syndaemon_events.patch | 32 debian/patches/125_option_rec_revert.patch | 167 - include/synaptics-properties.h | 2 include/synaptics.h | 39 src/alpscomm.c | 97 src/eventcomm.c | 666 ++--- src/eventcomm.h | 8 src/properties.c | 589 ++--- src/ps2comm.c | 534 ++-- src/ps2comm.h | 21 src/psmcomm.c | 71 src/synaptics.c | 2589 +++++++++++----------- src/synapticsstr.h | 361 +-- src/synproto.c | 46 src/synproto.h | 54 test/eventcomm-test.c | 86 test/fake-symbols.c | 176 - test/fake-symbols.h | 169 - tools/synclient.c | 588 ++-- tools/syndaemon.c | 604 ++--- 26 files changed, 3952 insertions(+), 3456 deletions(-)
New commits: commit 6d5d3caee239be736098e0c2342d9f7355b1ce5e Author: Maarten Lankhorst <maarten.lankho...@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.lankho...@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.hutte...@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.hutte...@who-t.net> -Reviewed-by: Chase Douglas <chase.doug...@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.doug...@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.doug...@canonical.com> -Signed-off-by: Peter Hutterer <peter.hutte...@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.y...@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.y...@gmail.com> -Signed-off-by: Peter Hutterer <peter.hutte...@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.doug...@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.doug...@canonical.com> -Signed-off-by: Peter Hutterer <peter.hutte...@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.hutte...@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.hutte...@who-t.net> -Reviewed-by: Chase Douglas <chase.doug...@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.hutte...@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.hutte...@who-t.net> -Reviewed-by: Chase Douglas <chase.doug...@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 <k...@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 <k...@debian.org> Wed, 13 Jun 2012 22:21:59 +0200 + -- Cyril Brulebois <k...@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 <k...@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.hutte...@who-t.net> +Date: Tue Jun 12 13:46:34 2012 +1000 + + synaptics 1.6.2 + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + +commit c1aae820601a911432c64938f03eab62bafaab2f +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Fri May 18 09:38:50 2012 +1000 + + synaptics 1.6.1.901 + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + +commit 7ccca8e7d8fbf2ccb5a2dbbfbf06ff4dbd6b7149 +Author: Peter Hutterer <peter.hutte...@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.hutte...@who-t.net> + Reviewed-by: Chase Douglas <chase.doug...@canonical.com> + (cherry picked from commit 6d47d334d8a876e7e094306c313246b87016b78a) + +commit f8d970e191e6df05a8f2c26afdeea3e27b941a62 +Author: Peter Hutterer <peter.hutte...@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.hutte...@who-t.net> + Reviewed-by: Chase Douglas <chase.doug...@canonical.com> + (cherry picked from commit cd569377cda9b5a4ee00c0137db14f625c76c40f) + +commit 739175d198372a3226ce061b118d8fe5bbc8f6bf +Author: Chase Douglas <chase.doug...@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.doug...@canonical.com> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + (cherry picked from commit 0054b144f3daf00e46a35b2f165befb209df94fc) + +commit 67a02d676c96d5b3d4729290cd96af0201eb76bb +Author: Chun Yang <chuck.y...@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.y...@gmail.com> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + (cherry picked from commit 53557a5cab1e253dc8f4393207954ae0fe76068f) + +commit 23e87b57bb874326c88a7ad7292bec51959fb876 +Author: Chase Douglas <chase.doug...@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.doug...@canonical.com> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + (cherry picked from commit 55fc42e7c9b4948cadd4f98ef7b6a3b12e268e3e) + +commit 23065a974e5dcdf0d6a436a0547bb7887d306a6f +Author: Peter Hutterer <peter.hutte...@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.hutte...@who-t.net> + Reviewed-by: Chase Douglas <chase.doug...@canonical.com> + (cherry picked from commit 77d766b1d535dff9a27c7db343ede85d9f44850b) + commit e0f5688994baa85a8c658120681575cdd0ba2a58 Author: Peter Hutterer <peter.hutte...@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 <k...@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.hutte...@who-t.net> Date: Tue Jun 12 13:46:34 2012 +1000 synaptics 1.6.2 Signed-off-by: Peter Hutterer <peter.hutte...@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 c171d9e40005b79557b2402132f07f3ec2c71848 Author: Chase Douglas <chase.doug...@canonical.com> Date: Thu Jun 7 10:07:57 2012 -0700 releasing version 1.6.1-1ubuntu2 diff --git a/debian/changelog b/debian/changelog index 4bb62b4..0003c44 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,11 +1,11 @@ -xserver-xorg-input-synaptics (1.6.1-1ubuntu2) UNRELEASED; urgency=low +xserver-xorg-input-synaptics (1.6.1-1ubuntu2) quantal-proposed; urgency=low * Enable right button clickpad area by default (LP: #972727) - Upstream has this enabled. We had it disabled for Precise due to the feature landing well after feature freeze. This change puts us back in sync with upstream. - -- Chase Douglas <chase.doug...@ubuntu.com> Thu, 07 Jun 2012 10:03:04 -0700 + -- Chase Douglas <chase.doug...@ubuntu.com> Thu, 07 Jun 2012 10:07:18 -0700 xserver-xorg-input-synaptics (1.6.1-1ubuntu1) quantal; urgency=low commit 3054a6872df2726887429b3bb3a6c4608315801f Author: Chase Douglas <chase.doug...@canonical.com> Date: Thu Jun 7 10:07:14 2012 -0700 Enable right button clickpad area by default (LP: #972727) * Enable right button clickpad area by default (LP: #972727) - Upstream has this enabled. We had it disabled for Precise due to the feature landing well after feature freeze. This change puts us back in sync with upstream. diff --git a/debian/changelog b/debian/changelog index 22b9efc..4bb62b4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +xserver-xorg-input-synaptics (1.6.1-1ubuntu2) UNRELEASED; urgency=low + + * Enable right button clickpad area by default (LP: #972727) + - Upstream has this enabled. We had it disabled for Precise due to the + feature landing well after feature freeze. This change puts us back in + sync with upstream. + + -- Chase Douglas <chase.doug...@ubuntu.com> Thu, 07 Jun 2012 10:03:04 -0700 + xserver-xorg-input-synaptics (1.6.1-1ubuntu1) quantal; urgency=low * Merged from Debian unstable diff --git a/debian/patches/130_dont_enable_rightbutton_area.patch b/debian/patches/130_dont_enable_rightbutton_area.patch deleted file mode 100644 index b8399e1..0000000 --- a/debian/patches/130_dont_enable_rightbutton_area.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 797e51a27f48a93da9f3fb3355ca78c483029e63 Mon Sep 17 00:00:00 2001 -From: Chase Douglas <chase.doug...@canonical.com> -Date: Fri, 23 Mar 2012 10:58:52 -0700 -Subject: [PATCH] Revert "conf: enable right-button click by default on - non-Apple clickpads" - -This is a behavior change that is inappropriate at this point in the -Precise release cycle - -This reverts commit b6779458bcdb049480310ba1acb3991ad061ffc7. ---- - conf/50-synaptics.conf | 18 ------------------ - 1 files changed, 0 insertions(+), 18 deletions(-) - -diff --git a/conf/50-synaptics.conf b/conf/50-synaptics.conf -index 822f7a4..5ec7e78 100644 ---- a/conf/50-synaptics.conf -+++ b/conf/50-synaptics.conf -@@ -24,21 +24,3 @@ Section "InputClass" - MatchDevicePath "/dev/input/mouse*" - Option "Ignore" "on" - EndSection -- --# This option enables the bottom right corner to be a right button on --# non-synaptics clickpads. --# This option is only interpreted by clickpads. --Section "InputClass" -- Identifier "Default clickpad buttons" -- MatchDriver "synaptics" -- Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0" --EndSection -- --# This option disables software buttons on Apple touchpads. --# This option is only interpreted by clickpads. --Section "InputClass" -- Identifier "Disable clickpad buttons on Apple touchpads" -- MatchProduct "Apple|bcm5974" -- MatchDriver "synaptics" -- Option "SoftButtonAreas" "0 0 0 0 0 0 0 0" --EndSection --- -1.7.9.1 - diff --git a/debian/patches/series b/debian/patches/series index e6446d1..5a85917 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -19,7 +19,6 @@ 126_ubuntu_xi22.patch 128_disable_three_click_action.patch 129_disable_three_touch_tap.patch -130_dont_enable_rightbutton_area.patch # in synaptics-1.6-branch, scheduled for 1.6.2 release 201-Avoid-out-of-bounds-access-by-running-num_active_tou.patch commit 4f2482fa2c073e1248100d1eaf93460b1792e7b4 Author: Chase Douglas <chase.doug...@canonical.com> Date: Thu Jun 7 10:01:29 2012 -0700 Sync with 1.6.1-1ubuntu1 upload diff --git a/debian/changelog b/debian/changelog index a2d032e..22b9efc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -xserver-xorg-input-synaptics (1.6.1-1ubuntu1) UNRELEASED; urgency=low +xserver-xorg-input-synaptics (1.6.1-1ubuntu1) quantal; urgency=low * Merged from Debian unstable * Refreshed patches for indentation changes commit 2e518a6209cdb97fc955558b2877910da67e8996 Author: Maarten Lankhorst <maarten.lankho...@canonical.com> Date: Mon May 21 14:21:29 2012 +0200 Add temporary patches, for upstream git commits on synaptics-1.6-branch * Add temporary patches, for upstream git commits on synaptics-1.6-branch * Fix memory corruption by driver (LP: #941953) FDo #49439 - 201-Avoid-out-of-bounds-access-by-running-num_active_tou.patch - 202-Ignore-pre-existing-touches.patch * Fix FDo #49966 - 203-Fix-coasting-for-negative-ScrollDelta.patch * Fix jumpy cursor after suspend/resume - 204-Reset-open-slots-array-on-device-disable.patch * Fix another resume bug - 205-Reset-hw-x-y-to-INT_MIN-and-skip-HandleState-until-w.patch * Fix division by 0 or infinite loop with zero scroll distance FDo #49965 - 206-Don-t-allow-for-scroll-distances-of-0-49965.patch diff --git a/debian/changelog b/debian/changelog index 3e27367..a2d032e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,8 +6,20 @@ xserver-xorg-input-synaptics (1.6.1-1ubuntu1) UNRELEASED; urgency=low - 118_quell_error_msg.patch - 124_syndaemon_events.patch - 125_option_rec_revert.patch - - -- Maarten Lankhorst <maarten.lankho...@canonical.com> Mon, 21 May 2012 13:50:48 +0200 + * Add temporary patches, for upstream git commits on synaptics-1.6-branch + * Fix memory corruption by driver (LP: #941953) FDo #49439 + - 201-Avoid-out-of-bounds-access-by-running-num_active_tou.patch + - 202-Ignore-pre-existing-touches.patch + * Fix FDo #49966 + - 203-Fix-coasting-for-negative-ScrollDelta.patch + * Fix jumpy cursor after suspend/resume + - 204-Reset-open-slots-array-on-device-disable.patch + * Fix another resume bug + - 205-Reset-hw-x-y-to-INT_MIN-and-skip-HandleState-until-w.patch + * Fix division by 0 or infinite loop with zero scroll distance FDo #49965 + - 206-Don-t-allow-for-scroll-distances-of-0-49965.patch + + -- Maarten Lankhorst <maarten.lankho...@canonical.com> Mon, 21 May 2012 14:14:49 +0200 xserver-xorg-input-synaptics (1.6.1-1) unstable; urgency=low 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 new file mode 100644 index 0000000..2aac35f --- /dev/null +++ b/debian/patches/201-Avoid-out-of-bounds-access-by-running-num_active_tou.patch @@ -0,0 +1,37 @@ +From 23065a974e5dcdf0d6a436a0547bb7887d306a6f Mon Sep 17 00:00:00 2001 +From: Peter Hutterer <peter.hutte...@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.hutte...@who-t.net> +Reviewed-by: Chase Douglas <chase.doug...@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 new file mode 100644 index 0000000..cd36103 --- /dev/null +++ b/debian/patches/202-Ignore-pre-existing-touches.patch @@ -0,0 +1,47 @@ +From 23e87b57bb874326c88a7ad7292bec51959fb876 Mon Sep 17 00:00:00 2001 +From: Chase Douglas <chase.doug...@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.doug...@canonical.com> +Signed-off-by: Peter Hutterer <peter.hutte...@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 new file mode 100644 index 0000000..b492d8c --- /dev/null +++ b/debian/patches/203-Fix-coasting-for-negative-ScrollDelta.patch @@ -0,0 +1,44 @@ +From 67a02d676c96d5b3d4729290cd96af0201eb76bb Mon Sep 17 00:00:00 2001 +From: Chun Yang <chuck.y...@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.y...@gmail.com> +Signed-off-by: Peter Hutterer <peter.hutte...@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 new file mode 100644 index 0000000..b9baee8 --- /dev/null +++ b/debian/patches/204-Reset-open-slots-array-on-device-disable.patch @@ -0,0 +1,34 @@ +From 739175d198372a3226ce061b118d8fe5bbc8f6bf Mon Sep 17 00:00:00 2001 +From: Chase Douglas <chase.doug...@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.doug...@canonical.com> +Signed-off-by: Peter Hutterer <peter.hutte...@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 new file mode 100644 index 0000000..da104cd --- /dev/null +++ b/debian/patches/205-Reset-hw-x-y-to-INT_MIN-and-skip-HandleState-until-w.patch @@ -0,0 +1,78 @@ -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1shbdf-00042t...@vasks.debian.org