Commit a907552d authored by Jonas Ådahl's avatar Jonas Ådahl

wayland/cursor: Make sure the cached cursor has the right size

The cache key is just the name of the cursor, so if a previously added
cursor had e.g. scale == 1, if we ask for a new cursor with scale == 2,
we might still fetch the scale == 1 cursor from the cache. Avoid this by
making sure the scale of the cached one is correct.

If it isn't, load the cursor as normal, and update the cache entry with
the new properly scaled cursor.

Fixes: #1183
parent d31107c4
......@@ -342,7 +342,7 @@ _gdk_wayland_display_get_cursor_for_name_with_scale (GdkDisplay *display,
g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
wayland_cursor = g_hash_table_lookup (display_wayland->cursor_cache, name);
if (wayland_cursor)
if (wayland_cursor && wayland_cursor->scale == scale)
return GDK_CURSOR (g_object_ref (wayland_cursor));
wayland_cursor = g_object_new (GDK_TYPE_WAYLAND_CURSOR,
......@@ -369,9 +369,9 @@ _gdk_wayland_display_get_cursor_for_name_with_scale (GdkDisplay *display,
/* Insert into cache. */
g_hash_table_insert (display_wayland->cursor_cache,
g_object_ref (wayland_cursor));
g_hash_table_replace (display_wayland->cursor_cache,
g_object_ref (wayland_cursor));
return GDK_CURSOR (wayland_cursor);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment