Under some certain circumstances, pointer button may have been released
when frame is still being resized/moved. When this happens, the picked
seat is NULL and it will segfault when moving/resizing surfaces. Check
whether the seat is NULL and ignore move/resize in that case.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=82827
Signed-off-by: Boyan Ding <stu_...@126.com>
---
 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);
        }
 
-- 
2.1.0


_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to