From 09c87cec3f0ea779717e38b3b886ef9a93840339 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Fri, 2 Jun 2023 20:50:54 +0200 Subject: cursor: fix wl_pointer.set_cursor hotspot updates A client might update the cursor with the same wl_surface as before, but with a different hotspot. Don't ignore such updates. Fixes: 9c9e3f626350 ("cursor: ignore wlr_cursor_set_surface() with same surface") --- types/wlr_cursor.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/types/wlr_cursor.c b/types/wlr_cursor.c index fdb40a72..a3cf5183 100644 --- a/types/wlr_cursor.c +++ b/types/wlr_cursor.c @@ -463,7 +463,9 @@ void wlr_cursor_set_surface(struct wlr_cursor *cur, struct wlr_surface *surface, struct wlr_cursor_output_cursor *output_cursor; wl_list_for_each(output_cursor, &cur->state->output_cursors, link) { - if (surface == output_cursor->surface) { + if (surface == output_cursor->surface && + hotspot_x == output_cursor->surface_hotspot.x && + hotspot_y == output_cursor->surface_hotspot.y) { continue; } -- cgit v1.2.3