wayland: Avoid leaking cursor textures
authorMatthias Clasen <mclasen@redhat.com>
Sat, 13 Aug 2022 17:19:49 +0000 (13:19 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 13 Aug 2022 17:19:49 +0000 (13:19 -0400)
When we fall back to the default cursor and load it
from a resource, we need to free the texture.

gdk/wayland/gdkcursor-wayland.c

index a5602bcbaf9f94df8d93ae0923cbe9a4942a3100..41cd2e4fc4a90eaba27d848e1637ae11c6e85517 100644 (file)
@@ -215,7 +215,7 @@ _gdk_wayland_cursor_get_buffer (GdkWaylandDisplay *display,
       cairo_surface_t *surface;
       struct wl_buffer *buffer;
 
-      texture = gdk_cursor_get_texture (cursor);
+      texture = g_object_ref (gdk_cursor_get_texture (cursor));
 
 from_texture:
       surface = g_hash_table_lookup (display->cursor_surface_cache, cursor);
@@ -245,6 +245,8 @@ from_texture:
       buffer = _gdk_wayland_shm_surface_get_wl_buffer (surface);
       wl_buffer_add_listener (buffer, &buffer_listener, surface);
 
+      g_object_unref (texture);
+
       return buffer;
     }