[PATCH xf86-input-synaptics 12/12] Ignore motion during touch count changes on semi-mt devices

Chase Douglas chase.douglas at canonical.com
Thu Feb 9 18:53:06 PST 2012


Signed-off-by: Chase Douglas <chase.douglas at canonical.com>
---
 src/synaptics.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/src/synaptics.c b/src/synaptics.c
index 9d8f3ee..1f4bebd 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -1426,6 +1426,14 @@ ReadInput(InputInfoPtr pInfo)
     SynapticsResetTouchHwState(hw);
 
     while (SynapticsGetHwState(pInfo, priv, hw)) {
+	/* Semi-mt device touch slots do not track touches. When there is a
+	 * change in the number of touches, we must disregard the temporary
+	 * motion changes. */
+	if (priv->has_semi_mt && hw->numFingers != priv->hwState->numFingers) {
+	    hw->cumulative_dx = priv->hwState->cumulative_dx;
+	    hw->cumulative_dy = priv->hwState->cumulative_dy;
+	}
+
 	SynapticsCopyHwState(priv->hwState, hw);
 	delay = HandleState(pInfo, hw, hw->millis, FALSE);
 	newDelay = TRUE;
-- 
1.7.8.3



More information about the xorg-devel mailing list