tools/replay: search for the first event with a timestamp
authorPeter Hutterer <peter.hutterer@who-t.net>
Fri, 19 Feb 2021 03:31:56 +0000 (13:31 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Tue, 23 Feb 2021 00:43:52 +0000 (10:43 +1000)
When running with --with-libinput, the first event is the DEVICE_ADDED event
for our device. Those events do not have a timestamp.

We have to find the first event in the recording with a timestamp instead.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
tools/libinput-replay

index b3710c9..3ecb77a 100755 (executable)
@@ -209,20 +209,17 @@ def replay(device, verbose):
 
 
 def first_timestamp(device):
-    try:
-        events = fetch(device, "events")
-        if events is None:
-            raise YamlException("No events from this device")
-
-        evdev = fetch(events[0], "evdev")
-        (sec, usec, *_) = evdev[0]
-
-        return sec + usec / 1.0e6
-
-    except YamlException:
-        import math
+    events = fetch(device, "events")
+    for e in events or []:
+        try:
+            evdev = fetch(e, "evdev")
+            (sec, usec, *_) = evdev[0]
+            return sec + usec / 1.0e6
+        except YamlException:
+            pass
 
-        return math.inf
+    import math
+    return math.inf
 
 
 def wrap(func, *args):