[PATCH synaptics] Revert "Don't store fake events in the motion history"

Peter Hutterer peter.hutterer at who-t.net
Sun Feb 19 16:20:41 PST 2012


This commit introduced a regression. On some touchpads, the pointer keeps
moving in the last direction when the finger movement stops but the finger
is left on the touchpad.

Cause appears to be get_delta() which calculates the deltas based on the
motion history but has no control flow for the lack of fake motion events
in the history after this commit. Thus, under some conditions, the delta is
always non-zero as the history does not change.

Reproducer attached to bug
https://bugs.freedesktop.org/show_bug.cgi?id=45278#c11

X.Org Bug 45278 <http://bugs.freedesktop.org/show_bug.cgi?id=45278>

This reverts commit c8b098214b44cf0585d78c460401ea7d143769f3.

Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
There is probably a more extensive fix, starting with figuring out why the
timer still fires after enough movement to adding hooks for ignoring the
motion history if we're from a timer. This requires more time that I have
available atm.

 src/synaptics.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/synaptics.c b/src/synaptics.c
index 7b3f680..65b48ee 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -2887,7 +2887,7 @@ HandleState(InputInfoPtr pInfo, struct SynapticsHwState *hw, CARD32 now,
     priv->lastButtons = buttons;
 
     /* generate a history of the absolute positions */
-    if (inside_active_area && !from_timer)
+    if (inside_active_area)
 	store_history(priv, hw->x, hw->y, hw->millis);
     return delay;
 }
-- 
1.7.7.5



More information about the xorg-devel mailing list