util: move libinput_now() into a utility function
authorPeter Hutterer <peter.hutterer@who-t.net>
Mon, 21 Oct 2024 01:07:14 +0000 (11:07 +1000)
committerMarge Bot <emma+marge@anholt.net>
Wed, 30 Oct 2024 23:20:42 +0000 (23:20 +0000)
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1067>

src/libinput-private.h
src/util-time.h

index 3038d1557d7c79ee57966047ee5978cb03ffbeeb..dd526cb0756b4d2ef87595393d53473b4db92f37 100644 (file)
@@ -836,14 +836,15 @@ switch_notify_toggle(struct libinput_device *device,
 static inline uint64_t
 libinput_now(struct libinput *libinput)
 {
-       struct timespec ts = { 0, 0 };
+       uint64_t now;
+       int rc = now_in_us(&now);
 
-       if (clock_gettime(CLOCK_MONOTONIC, &ts) != 0) {
-               log_error(libinput, "clock_gettime failed: %s\n", strerror(errno));
+       if (rc < 0) {
+               log_error(libinput, "clock_gettime failed: %s\n", strerror(-rc));
                return 0;
        }
 
-       return s2us(ts.tv_sec) + ns2us(ts.tv_nsec);
+       return now;
 }
 
 static inline struct device_float_coords
index ec1f9937bbc3dc323cede2ce44d43e69ae763675..e534fceada30aceb343bc9d55f17cee110beb88c 100644 (file)
@@ -26,6 +26,7 @@
 #include "config.h"
 
 #include <assert.h>
+#include <errno.h>
 #include <time.h>
 #include <stdint.h>
 #include <unistd.h>
@@ -98,6 +99,20 @@ us2tv(uint64_t time)
        return tv;
 }
 
+static inline int
+now_in_us(uint64_t *us)
+{
+       struct timespec ts = { 0, 0 };
+
+       if (clock_gettime(CLOCK_MONOTONIC, &ts) != 0) {
+               *us = 0;
+               return -errno;
+       }
+
+       *us = s2us(ts.tv_sec) + ns2us(ts.tv_nsec);
+       return 0;
+}
+
 struct human_time {
        unsigned int value;
        const char *unit;