[PATCH weston v2] input: Make setting the same pointer cursor state again a no-op

Jonas Ådahl jadahl at gmail.com
Wed Mar 18 19:23:31 PDT 2015


If the client calls wl_pointer.set_cursor with the same surface and hot
spot coordinate 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 <jadahl at gmail.com>
---

Changes since v1:

Only no-op if both surface and hotspot was unchanged.

 src/input.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/input.c b/src/input.c
index 3867de2..469d5ce 100644
--- a/src/input.c
+++ b/src/input.c
@@ -1655,6 +1655,10 @@ pointer_set_cursor(struct wl_client *client, struct wl_resource *resource,
 			return;
 	}
 
+	if (pointer->sprite && pointer->sprite->surface == surface &&
+	    pointer->hotspot_x == x && pointer->hotspot_y == y)
+		return;
+
 	if (pointer->sprite)
 		pointer_unmap_sprite(pointer);
 
-- 
2.1.0



More information about the wayland-devel mailing list