Signed-off-by: Chase Douglas <chase.doug...@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

_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to