[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