From c8087567c97adc09890dbb49d8abfde44378d8cb Mon Sep 17 00:00:00 2001 From: Riteo <riteo@posteo.net> Date: Fri, 24 Jan 2025 15:10:46 +0100 Subject: [PATCH] Wayland: Check custom cursor resource reference for cache invalidation Images don't have RIDs and this way of checking stuff broke the cursor cache. Let's do like all other platforms and check the resource reference instead. --- platform/linuxbsd/wayland/display_server_wayland.cpp | 4 ++-- platform/linuxbsd/wayland/display_server_wayland.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/platform/linuxbsd/wayland/display_server_wayland.cpp b/platform/linuxbsd/wayland/display_server_wayland.cpp index 532eaa6bcf4..f9b34ff043b 100644 --- a/platform/linuxbsd/wayland/display_server_wayland.cpp +++ b/platform/linuxbsd/wayland/display_server_wayland.cpp @@ -1033,7 +1033,7 @@ void DisplayServerWayland::cursor_set_custom_image(const Ref<Resource> &p_cursor HashMap<CursorShape, CustomCursor>::Iterator cursor_c = custom_cursors.find(p_shape); if (cursor_c) { - if (cursor_c->value.rid == p_cursor->get_rid() && cursor_c->value.hotspot == p_hotspot) { + if (cursor_c->value.resource == p_cursor && cursor_c->value.hotspot == p_hotspot) { // We have a cached cursor. Nice. wayland_thread.cursor_set_shape(p_shape); return; @@ -1049,7 +1049,7 @@ void DisplayServerWayland::cursor_set_custom_image(const Ref<Resource> &p_cursor CustomCursor &cursor = custom_cursors[p_shape]; - cursor.rid = p_cursor->get_rid(); + cursor.resource = p_cursor; cursor.hotspot = p_hotspot; wayland_thread.cursor_shape_set_custom_image(p_shape, image, p_hotspot); diff --git a/platform/linuxbsd/wayland/display_server_wayland.h b/platform/linuxbsd/wayland/display_server_wayland.h index 8c3bac9c7e3..43a8b01b320 100644 --- a/platform/linuxbsd/wayland/display_server_wayland.h +++ b/platform/linuxbsd/wayland/display_server_wayland.h @@ -101,7 +101,7 @@ class DisplayServerWayland : public DisplayServer { }; struct CustomCursor { - RID rid; + Ref<Resource> resource; Point2i hotspot; };