On Wed,  3 Sep 2014 17:25:30 +0800
Boyan Ding <[email protected]> wrote:

> XCB and wayland input event handling exists together in xwm, which can
> cause problems. weston_wm_handle_button is called via XCB events, while
> it calls weston_wm_pick_seat_for_window, which uses info from compositor
> (pure wayland). It is also true in setting and removing flags of frames.
> Races can happen in between, when resize of moving flag of the frame is
> still set while the button has been released, the picked seat will be
> NULL in weston_wm_handle_button, causing crash. We can safely ignore
> moving or resizing if this happens. The same applies to c06a180d.
> 
> Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=82827
> Signed-off-by: Boyan Ding <[email protected]>
> ---
>  xwayland/window-manager.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/xwayland/window-manager.c b/xwayland/window-manager.c
> index a216b76..f633324 100644
> --- a/xwayland/window-manager.c
> +++ b/xwayland/window-manager.c
> @@ -1648,12 +1648,14 @@ weston_wm_handle_button(struct weston_wm *wm, 
> xcb_generic_event_t *event)
>               weston_wm_window_schedule_repaint(window);
>  
>       if (frame_status(window->frame) & FRAME_STATUS_MOVE) {
> -             shell_interface->move(window->shsurf, seat);
> +             if (seat != NULL)
> +                     shell_interface->move(window->shsurf, seat);
>               frame_status_clear(window->frame, FRAME_STATUS_MOVE);
>       }
>  
>       if (frame_status(window->frame) & FRAME_STATUS_RESIZE) {
> -             shell_interface->resize(window->shsurf, seat, location);
> +             if (seat != NULL)
> +                     shell_interface->resize(window->shsurf, seat, location);
>               frame_status_clear(window->frame, FRAME_STATUS_RESIZE);
>       }
>  

Excellent, pushed.


Thanks,
pq
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to