[PATCH weston] compositor-x11: Move the x11 event handler to the display loop

Derek Foreman derekf at osg.samsung.com
Fri Dec 12 12:29:42 PST 2014


I just noticed that the follow patch *exactly* undoes commit 22ba60e

Is there any other reason that commit was necessary, or was it intended
to be cosmetic?

On 12/12/14 02:12 PM, Derek Foreman wrote:
> While it conceptually makes sense to put the x11 event handler
> in the compositor "input" loop, the input loop is actually
> dispatched in the middle of the frame repaint.  When the
> X11 event results in closing the compositor, this can cause
> the current output to be destroyed just prior to trying to
> process animations on it.
> 
> Closes bug: https://bugs.freedesktop.org/show_bug.cgi?id=81314
> 
> Signed-off-by: Derek Foreman <derekf at osg.samsung.com>
> ---
>  src/compositor-x11.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/src/compositor-x11.c b/src/compositor-x11.c
> index a760f33..cf39ad7 100644
> --- a/src/compositor-x11.c
> +++ b/src/compositor-x11.c
> @@ -1455,6 +1455,7 @@ x11_compositor_create(struct wl_display *display,
>  	struct x11_compositor *c;
>  	struct x11_output *output;
>  	struct weston_config_section *section;
> +	struct wl_event_loop *loop;
>  	xcb_screen_iterator_t s;
>  	int i, x = 0, output_count = 0;
>  	int width, height, scale, count;
> @@ -1580,8 +1581,9 @@ x11_compositor_create(struct wl_display *display,
>  		x = pixman_region32_extents(&output->base.region)->x2;
>  	}
>  
> +	loop = wl_display_get_event_loop(c->base.wl_display);
>  	c->xcb_source =
> -		wl_event_loop_add_fd(c->base.input_loop,
> +		wl_event_loop_add_fd(loop,
>  				     xcb_get_file_descriptor(c->conn),
>  				     WL_EVENT_READABLE,
>  				     x11_compositor_handle_event, c);
> 



More information about the wayland-devel mailing list