On Mon, Oct 27, 2014 at 09:26:39AM -0500, Derek Foreman wrote: > 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;
Does libinput allow static variables? Usually when there's a library context, it should be possible to use the library from multiple threads, if they use different contexts. So maybe this counter should be inside `device` instead of static? Ran > 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 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel