Hi all,

The attached patch solves a problem that causes the touchpad cursor to
freeze after setting the date back. The full description is available
in the patch.

Regards,

-- 
Alberto Milone
Sustaining Engineer (system)
Premium Engagements Team
Canonical OEM Services
From f3399a956a2ebb90c11600163f380b9eee44b2ba Mon Sep 17 00:00:00 2001
From: Alberto Milone <[email protected]>
Date: Sun, 19 Dec 2010 16:46:19 +0100
Subject: [PATCH 1/1] Reset X/Y hist if the date is set back

Setting the date back, even by one day, will cause the deltas
to be negative, thus making the cursor freeze. Resetting the X/Y
history when the current timestamp is smaller than the previous
one solves the problem.

Signed-off-by: Alberto Milone <[email protected]>
---
 src/synaptics.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/synaptics.c b/src/synaptics.c
index f64a081..be7a45e 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -1754,7 +1754,8 @@ ComputeDeltas(SynapticsPrivate *priv, const struct SynapticsHwState *hw,
     if (inside_area && moving_state && !priv->palm &&
 	!priv->vert_scroll_edge_on && !priv->horiz_scroll_edge_on &&
 	!priv->vert_scroll_twofinger_on && !priv->horiz_scroll_twofinger_on &&
-	!priv->circ_scroll_on && priv->prevFingers == hw->numFingers) {
+	!priv->circ_scroll_on && priv->prevFingers == hw->numFingers &&
+	hw->millis > HIST(0).millis) {
 	/* FIXME: Wtf?? what's with 13? */
 	delay = MIN(delay, 13);
 	if (priv->count_packet_finger > 3) { /* min. 3 packets */
-- 
1.7.1

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to