Log a message when the kernel event queue overflows and events are dropped. After 10 messages logging stops to avoid flooding the logs if the condition is persistent. --- src/evdev.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
diff --git a/src/evdev.c b/src/evdev.c index 1b4ce10..c786537 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -912,6 +912,7 @@ evdev_sync_device(struct evdev_device *device) static void evdev_device_dispatch(void *data) { + static int overflows = 0; struct evdev_device *device = data; struct libinput *libinput = device->base.seat->libinput; struct input_event ev; @@ -924,6 +925,15 @@ evdev_device_dispatch(void *data) rc = libevdev_next_event(device->evdev, LIBEVDEV_READ_FLAG_NORMAL, &ev); if (rc == LIBEVDEV_READ_STATUS_SYNC) { + if (overflows < 10) { + overflows++; + log_info(libinput, "Kernel evdev event queue " + "overflow for %s\n", device->devname); + if (overflows == 10) + log_info(libinput, "No longer logging " + "evdev event queue overflows\n"); + } + /* send one more sync event so we handle all currently pending events before we sync up to the current state */ -- 2.1.1 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel