[PATCH libinput 5/5] timer: Complain if a timer is set more then 5 seconds from now

Hans de Goede hdegoede at redhat.com
Tue Jun 24 07:23:13 PDT 2014


Signed-off-by: Hans de Goede <hdegoede at redhat.com>
---
 src/timer.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/src/timer.c b/src/timer.c
index 65fdd17..4f465f3 100644
--- a/src/timer.c
+++ b/src/timer.c
@@ -22,6 +22,7 @@
 
 #include <assert.h>
 #include <errno.h>
+#include <inttypes.h>
 #include <string.h>
 #include <sys/timerfd.h>
 #include <unistd.h>
@@ -65,6 +66,20 @@ libinput_timer_arm_timer_fd(struct libinput *libinput)
 void
 libinput_timer_set(struct libinput_timer *timer, uint64_t expire)
 {
+#ifndef NDEBUG
+	struct timespec ts;
+
+	if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0) {
+		uint64_t now = ts.tv_sec * 1000ULL + ts.tv_nsec / 1000000;
+		if (abs(expire - now) > 5000)
+			log_bug_libinput("timer offset more then 5s, now %"
+					 PRIu64 " expire %" PRIu64 "\n",
+					 now, expire);
+	} else {
+		log_error("clock_gettime error: %s\n", strerror(errno));
+	}
+#endif
+
 	assert(expire);
 
 	if (!timer->expire)
-- 
2.0.0



More information about the wayland-devel mailing list