Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1067>
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
#include "config.h"
#include <assert.h>
+#include <errno.h>
#include <time.h>
#include <stdint.h>
#include <unistd.h>
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;