[PATCH 1/1] evdev: Fix a high CPU utilization bug
Kristian Høgsberg
hoegsberg at gmail.com
Thu Jun 6 22:16:36 PDT 2013
On Thu, Jun 06, 2013 at 05:17:37PM +0000, Singh, Satyeshwar wrote:
> The problem was that if we ever switched to another tty while running
> Weston, then we would essentially not handle any remaining events and Weston
> would enter an infinite loop where it's trying to process an event but it
> can't because the processing function evdev_device_data exits before it can
> read anything from the queue. With this fix, we read whatever is in the
> queue, but not process it any further.
That's odd, that shouldn't happen. We close all evdev devices when we
vt switch away. I couldn't reproduce it here either... is there a
certain sequence that triggers it?
Kristian
>
> ---
> src/evdev.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/src/evdev.c b/src/evdev.c
> index 9289b1c..70d3c52 100644
> --- a/src/evdev.c
> +++ b/src/evdev.c
> @@ -372,8 +372,6 @@ evdev_device_data(int fd, uint32_t mask, void *data)
> int len;
>
> ec = device->seat->compositor;
> - if (!ec->focus)
> - return 1;
>
> /* If the compositor is repainting, this function is called only once
> * per frame and we have to process all the events available on the
> @@ -391,7 +389,8 @@ evdev_device_data(int fd, uint32_t mask, void *data)
> return 1;
> }
>
> - evdev_process_events(device, ev, len / sizeof ev[0]);
> + if (ec->focus)
> + evdev_process_events(device, ev, len / sizeof ev[0]);
>
> } while (len > 0);
>
> --
> 1.7.11.4
>
>
>
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
More information about the wayland-devel
mailing list