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