This change adds a new touch slot state that denotes when the slot is open but does not have any new data to report.
Signed-off-by: Chase Douglas <[email protected]> --- src/eventcomm.c | 3 ++- src/synproto.c | 13 ++++++++++++- src/synproto.h | 1 + 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/eventcomm.c b/src/eventcomm.c index f199c24..3721c91 100644 --- a/src/eventcomm.c +++ b/src/eventcomm.c @@ -557,7 +557,8 @@ EventProcessTouchEvent(InputInfoPtr pInfo, struct SynapticsHwState *hw, { int slot_index = last_mt_vals_slot(priv); - if (hw->slot_state[slot_index] == SLOTSTATE_EMPTY) + if (hw->slot_state[slot_index] == SLOTSTATE_EMPTY || + hw->slot_state[slot_index] == SLOTSTATE_OPEN_EMPTY) hw->slot_state[slot_index] = SLOTSTATE_UPDATE; if (ev->code == ABS_MT_TRACKING_ID) { diff --git a/src/synproto.c b/src/synproto.c index bdf2d21..19a13e5 100644 --- a/src/synproto.c +++ b/src/synproto.c @@ -152,7 +152,18 @@ SynapticsResetTouchHwState(struct SynapticsHwState *hw) for (j = 2; j < valuator_mask_num_valuators(hw->mt_mask[i]); j++) valuator_mask_unset(hw->mt_mask[i], j); - hw->slot_state[i] = SLOTSTATE_EMPTY; + switch (hw->slot_state[i]) + { + case SLOTSTATE_OPEN: + case SLOTSTATE_OPEN_EMPTY: + case SLOTSTATE_UPDATE: + hw->slot_state[i] = SLOTSTATE_OPEN_EMPTY; + break; + + default: + hw->slot_state[i] = SLOTSTATE_EMPTY; + break; + } } #endif } diff --git a/src/synproto.h b/src/synproto.h index 95ebc92..e16aeb0 100644 --- a/src/synproto.h +++ b/src/synproto.h @@ -42,6 +42,7 @@ enum SynapticsSlotState SLOTSTATE_EMPTY = 0, SLOTSTATE_OPEN, SLOTSTATE_CLOSE, + SLOTSTATE_OPEN_EMPTY, SLOTSTATE_UPDATE, }; -- 1.7.9.1 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
