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:
Jonas Ådahl 2018-05-09 22:13:10 +02:00
parent 47872e5172
commit a5d000cb5c

View File

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