xwayland: Clear pending cursor frame callbacks on pointer enter

The last cursor frame we commited before the pointer left one of our
surfaces might not have been shown. In that case we'll have a cursor
surface frame callback pending which we need to clear so that we can
continue submitting new cursor frames.

Signed-off-by: Rui Matos <tiagomatos@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
This commit is contained in:
Rui Matos 2016-02-03 16:14:09 +01:00 committed by Adam Jackson
parent b7d392931a
commit 87d5534f70

View File

@ -267,6 +267,16 @@ pointer_handle_enter(void *data, struct wl_pointer *pointer,
for (i = 0; i < dev->button->numButtons; i++)
if (BitIsOn(dev->button->down, i))
QueuePointerEvents(dev, ButtonRelease, i, 0, &mask);
/* The last cursor frame we commited before the pointer left one
* of our surfaces might not have been shown. In that case we'll
* have a cursor surface frame callback pending which we need to
* clear so that we can continue submitting new cursor frames. */
if (xwl_seat->cursor_frame_cb) {
wl_callback_destroy(xwl_seat->cursor_frame_cb);
xwl_seat->cursor_frame_cb = NULL;
xwl_seat_set_cursor(xwl_seat);
}
}
static void