[PATCH libinput] evdev: Log evdev event queue overflows

Derek Foreman derekf at osg.samsung.com
Mon Oct 27 07:33:45 PDT 2014


A couple of questions on this one:
Is it ok to limit logging to 10 messages like this?
Should I be doing that on a per device basis instead of globally?

(I'm totally unattached to the specifics of the log text, I believe X
says something clever about how it's not the X server's fault to avoid
silly bug reports...)

Thanks

On 27/10/14 09:26 AM, 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;
>  	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 */
> 



More information about the wayland-devel mailing list