Include open but unchanged touches when guessing clickfingers

On a clickpad, when the button is pressed the clickfinger guessing will
only work properly if all touches have new data to report. If a touch
has not changed, then it will not be counted. This leads to inaccurate
finger counts.

This change ensures that all active touches are counted. Note that the X
and Y valuators of active but unchanged touches are still valid.

Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Chase Douglas
2012-03-21 12:58:30 -07:00
committed by Peter Hutterer
parent eba82d203e
commit b3348eb7e4

View File

@@ -2600,8 +2600,8 @@ clickpad_guess_clickfingers(SynapticsPrivate *priv, struct SynapticsHwState *hw)
for (i = 0; i < hw->num_mt_mask - 1; i++) {
ValuatorMask *f1;
/* you can't click on open, you're not fast enough */
if (hw->slot_state[i] != SLOTSTATE_UPDATE)
if (hw->slot_state[i] == SLOTSTATE_EMPTY ||
hw->slot_state[i] == SLOTSTATE_CLOSE)
continue;
f1 = hw->mt_mask[i];
@@ -2610,7 +2610,8 @@ clickpad_guess_clickfingers(SynapticsPrivate *priv, struct SynapticsHwState *hw)
ValuatorMask *f2;
double x1, x2, y1, y2;
if (hw->slot_state[j] != SLOTSTATE_UPDATE)
if (hw->slot_state[j] == SLOTSTATE_EMPTY ||
hw->slot_state[j] == SLOTSTATE_CLOSE)
continue;
f2 = hw->mt_mask[j];