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

Reply via email to