Commit b7b2c340 authored by Olivier Fourdan's avatar Olivier Fourdan 🛠
Browse files

xwayland: Clear tablet cursor pending frame cb



If the tablet tool is moved out of proximity before the cursor's pending
frame callback is received, any further attempts to update the cursor
will fail because the frame callback is still pending.

Make sure to clear any cursor pending frame when the tool gets in
proximity again, similar to what we do when the pointer re-enters a
surface, so that the cursor updates aren't discarded.
Signed-off-by: Olivier Fourdan's avatarOlivier Fourdan <ofourdan@redhat.com>
See-also: https://gitlab.gnome.org/GNOME/mutter/-/issues/1969

Reviewed-by: Carlos Garnacho's avatarCarlos Garnacho <carlosg@gnome.org>
(cherry picked from commit 35c5664f)
parent 21e3dc3b
Pipeline #427939 passed with stages
in 1 minute and 37 seconds
......@@ -1677,6 +1677,13 @@ tablet_tool_proximity_in(void *data, struct zwp_tablet_tool_v2 *tool,
xwl_tablet_tool->proximity_in_serial = serial;
xwl_seat->tablet_focus_window = wl_surface_get_user_data(wl_surface);
/* If there is a cursor surface frame callback pending, we need to clear it
* so that we can continue submitting new cursor frames.
*/
if (xwl_tablet_tool->cursor.frame_cb) {
wl_callback_destroy(xwl_tablet_tool->cursor.frame_cb);
xwl_tablet_tool->cursor.frame_cb = NULL;
}
xwl_tablet_tool_set_cursor(xwl_tablet_tool);
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment