From 4f282688acdab2cd388866e4afdd9c76237f43e7 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 6 Oct 2020 15:35:44 +1000 Subject: [PATCH] tools: print the libinput_dispatch() counter for debugging messages The messages with priority DEBUG refer to the various internal state machines updating, so it's useful to know when they did so. Let's count up every time we trigger libinput_dispatch() so we know how the messages group together. Signed-off-by: Peter Hutterer --- tools/libinput-debug-events.c | 2 +- tools/libinput-debug-gui.c | 2 +- tools/shared.c | 18 ++++++++++++++++++ tools/shared.h | 2 ++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/tools/libinput-debug-events.c b/tools/libinput-debug-events.c index 433bfc87..42125dc0 100644 --- a/tools/libinput-debug-events.c +++ b/tools/libinput-debug-events.c @@ -824,7 +824,7 @@ handle_and_print_events(struct libinput *li) int rc = -1; struct libinput_event *ev; - libinput_dispatch(li); + tools_dispatch(li); while ((ev = libinput_get_event(li))) { print_event_header(ev); diff --git a/tools/libinput-debug-gui.c b/tools/libinput-debug-gui.c index 70e41e16..64af6449 100644 --- a/tools/libinput-debug-gui.c +++ b/tools/libinput-debug-gui.c @@ -1422,7 +1422,7 @@ handle_event_libinput(GIOChannel *source, GIOCondition condition, gpointer data) struct window *w = libinput_get_user_data(li); struct libinput_event *ev; - libinput_dispatch(li); + tools_dispatch(li); while ((ev = libinput_get_event(li))) { switch (libinput_event_get_type(ev)) { diff --git a/tools/shared.c b/tools/shared.c index a55a9157..fce32d71 100644 --- a/tools/shared.c +++ b/tools/shared.c @@ -43,6 +43,15 @@ #include "util-macros.h" #include "util-strings.h" +static uint32_t dispatch_counter = 0; + +void +tools_dispatch(struct libinput *libinput) +{ + dispatch_counter++; + libinput_dispatch(libinput); +} + LIBINPUT_ATTRIBUTE_PRINTF(3, 0) static void log_handler(struct libinput *li, @@ -51,6 +60,7 @@ log_handler(struct libinput *li, va_list args) { static int is_tty = -1; + static uint32_t last_dispatch_no = 0; if (is_tty == -1) is_tty = isatty(STDOUT_FILENO); @@ -62,6 +72,14 @@ log_handler(struct libinput *li, printf(ANSI_HIGHLIGHT); } + if (priority < LIBINPUT_LOG_PRIORITY_INFO) { + if (dispatch_counter != last_dispatch_no) { + last_dispatch_no = dispatch_counter; + printf("%4u: ", dispatch_counter); + } else { + printf(" %4s ", "..."); + } + } vprintf(format, args); if (is_tty && priority >= LIBINPUT_LOG_PRIORITY_INFO) diff --git a/tools/shared.h b/tools/shared.h index 730e1a45..471c3995 100644 --- a/tools/shared.h +++ b/tools/shared.h @@ -132,4 +132,6 @@ tools_list_device_quirks(struct quirks_context *ctx, void (*callback)(void *userdata, const char *str), void *userdata); +void +tools_dispatch(struct libinput *libinput); #endif