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

Reply via email to