mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-11 19:30:10 +00:00
wayland: Fix restarting cursor animation
When an animated cursor was set and the previous cursor animation delay happened to be the same, we wouldn't restart the animation timeout and just return G_SOURCE_CONTINUE assuming the timer would continue. This assumption is however only valid if the function was called from the timeout, which is not the case. Instead also arm the timer also if there is no previous timer active.
This commit is contained in:
parent
47872e5172
commit
a5d000cb5c
@ -405,13 +405,16 @@ gdk_wayland_device_update_surface_cursor (GdkDevice *device)
|
||||
else
|
||||
{
|
||||
pointer->cursor_timeout_id = 0;
|
||||
return TRUE;
|
||||
return G_SOURCE_REMOVE;
|
||||
}
|
||||
|
||||
if (tablet)
|
||||
{
|
||||
if (!tablet->current_tool)
|
||||
return retval;
|
||||
{
|
||||
pointer->cursor_timeout_id = 0;
|
||||
return G_SOURCE_REMOVE;
|
||||
}
|
||||
|
||||
zwp_tablet_tool_v2_set_cursor (tablet->current_tool->wp_tablet_tool,
|
||||
pointer->enter_serial,
|
||||
@ -426,7 +429,10 @@ gdk_wayland_device_update_surface_cursor (GdkDevice *device)
|
||||
x, y);
|
||||
}
|
||||
else
|
||||
return retval;
|
||||
{
|
||||
pointer->cursor_timeout_id = 0;
|
||||
return G_SOURCE_REMOVE;
|
||||
}
|
||||
|
||||
if (buffer)
|
||||
{
|
||||
@ -450,7 +456,8 @@ gdk_wayland_device_update_surface_cursor (GdkDevice *device)
|
||||
|
||||
if (next_image_index != pointer->cursor_image_index)
|
||||
{
|
||||
if (next_image_delay != pointer->cursor_image_delay)
|
||||
if (next_image_delay != pointer->cursor_image_delay ||
|
||||
pointer->cursor_timeout_id == 0)
|
||||
{
|
||||
guint id;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user