tools: per-slot-delta: if a NONE touch gets data, assume it's starting
authorPeter Hutterer <peter.hutterer@who-t.net>
Wed, 3 Jun 2020 06:21:10 +0000 (16:21 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Thu, 4 Jun 2020 00:43:33 +0000 (10:43 +1000)
If we have a recording that started after the touch down, let's start that
touch on the first x/y position update.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
tools/libinput-analyze-per-slot-delta.py

index 06a79e606a952ccd61bd7f5b548036578e0bb1f8..bdafeff15e59ae3ba4e1cf958c55967482df97eb 100755 (executable)
@@ -227,12 +227,20 @@ def main(argv):
                     else:
                         s.state = SlotState.END
                 elif e.code == libevdev.EV_ABS.ABS_X:
-                    if s.state == SlotState.UPDATE:
+                    # If recording started after touch down
+                    if s.state == SlotState.NONE:
+                        s.state = SlotState.BEGIN
+                        s.dx, s.dy = 0, 0
+                    elif s.state == SlotState.UPDATE:
                         s.dx = e.value - s.x
                     s.x = e.value
                     s.dirty = True
                 elif e.code == libevdev.EV_ABS.ABS_Y:
-                    if s.state == SlotState.UPDATE:
+                    # If recording started after touch down
+                    if s.state == SlotState.NONE:
+                        s.state = SlotState.BEGIN
+                        s.dx, s.dy = 0, 0
+                    elif s.state == SlotState.UPDATE:
                         s.dy = e.value - s.y
                     s.y = e.value
                     s.dirty = True
@@ -254,12 +262,20 @@ def main(argv):
                         s.dy = 0
                     s.dirty = True
                 elif e.code == libevdev.EV_ABS.ABS_MT_POSITION_X:
-                    if s.state == SlotState.UPDATE:
+                    # If recording started after touch down
+                    if s.state == SlotState.NONE:
+                        s.state = SlotState.BEGIN
+                        s.dx, s.dy = 0, 0
+                    elif s.state == SlotState.UPDATE:
                         s.dx = e.value - s.x
                     s.x = e.value
                     s.dirty = True
                 elif e.code == libevdev.EV_ABS.ABS_MT_POSITION_Y:
-                    if s.state == SlotState.UPDATE:
+                    # If recording started after touch down
+                    if s.state == SlotState.NONE:
+                        s.state = SlotState.BEGIN
+                        s.dx, s.dy = 0, 0
+                    elif s.state == SlotState.UPDATE:
                         s.dy = e.value - s.y
                     s.y = e.value
                     s.dirty = True