If the client calls wl_pointer.set_cursor with the same surface that is already set, don't do anything as no state was changed.
This avoids an issue where a client setting the same cursor surface multiple times would receive wl_surface.leave/enter on that surface every time. Signed-off-by: Jonas Ådahl <[email protected]> --- src/input.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/input.c b/src/input.c index 3867de2..4119027 100644 --- a/src/input.c +++ b/src/input.c @@ -1655,6 +1655,9 @@ pointer_set_cursor(struct wl_client *client, struct wl_resource *resource, return; } + if (pointer->sprite && pointer->sprite->surface == surface) + return; + if (pointer->sprite) pointer_unmap_sprite(pointer); -- 2.1.0 _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
