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 <killertofu@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Olivier Fourdan <ofourdan@redhat.com>
This commit is contained in:
Peter Hutterer 2015-08-28 14:28:10 +10:00 committed by Olivier Fourdan
parent f1ba8858d5
commit 373599ab00

View File

@ -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