From 373599ab008f0ecf8f3fb62455a5474f5ec8f499 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 28 Aug 2015 14:28:10 +1000 Subject: [PATCH] xwayland: fix crash on enter/leave for a grabbed slave device When grabbed, the slave device is floating, i.e. the master device is NULL. CheckMotion() isn't happy with NULL. Make sure we pass the right device in, either the master device when the device is attached, or the device itself when it is floating. Reported-by: Jason Gerecke Signed-off-by: Peter Hutterer Reviewed-by: Olivier Fourdan --- hw/xwayland/xwayland-input.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/xwayland/xwayland-input.c b/hw/xwayland/xwayland-input.c index 143a801e5..a29ba782f 100644 --- a/hw/xwayland/xwayland-input.c +++ b/hw/xwayland/xwayland-input.c @@ -231,7 +231,7 @@ pointer_handle_enter(void *data, struct wl_pointer *pointer, xwl_seat->focus_window = wl_surface_get_user_data(surface); (*pScreen->SetCursorPosition) (dev, pScreen, sx, sy, TRUE); - CheckMotion(NULL, GetMaster(dev, MASTER_POINTER)); + CheckMotion(NULL, GetMaster(dev, POINTER_OR_FLOAT)); /* Ideally, X clients shouldn't see these button releases. When * the pointer leaves a window with buttons down, it means that @@ -259,7 +259,7 @@ pointer_handle_leave(void *data, struct wl_pointer *pointer, xwl_seat->xwl_screen->serial = serial; xwl_seat->focus_window = NULL; - CheckMotion(NULL, GetMaster(dev, MASTER_POINTER)); + CheckMotion(NULL, GetMaster(dev, POINTER_OR_FLOAT)); } static void