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:
parent
f1ba8858d5
commit
373599ab00
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue