From 4954d18ff54e5e59a3bbd6b90ebc5d9acbb5e571 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Thu, 3 Oct 2013 13:50:15 +0200 Subject: [PATCH 2/3] display: fix palette regression palette_get() used to return a ref, and palette_release() used to release that ref. Since ed877341, the palette is no longer refcount'ed, since its usage is exclusively local in common/canvas code. palette_release() shouldn't remove the palette from the cache. https://bugzilla.redhat.com/show_bug.cgi?id=1011936 --- gtk/channel-display.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gtk/channel-display.c b/gtk/channel-display.c index 794f4eb..e0f17eb 100644 --- a/gtk/channel-display.c +++ b/gtk/channel-display.c @@ -546,8 +546,8 @@ static SpicePalette *palette_get(SpicePaletteCache *cache, uint64_t id) SPICE_CONTAINEROF(cache, SpiceDisplayChannelPrivate, palette_cache); /* here the returned pointer is weak, no ref given to caller. it - * seems spice canvas usage is exclusively temporary, so it's ok - * (for now) */ + * seems spice canvas usage is exclusively temporary, so it's ok. + * palette_release is a noop. */ return cache_find(c->palettes, id); } @@ -561,7 +561,7 @@ static void palette_remove(SpicePaletteCache *cache, uint32_t id) static void palette_release(SpicePaletteCache *cache, SpicePalette *palette) { - palette_remove(cache, palette->unique); + /* there is no refcount of palette, see palette_get() */ } #ifdef SW_CANVAS_CACHE -- 1.8.3.1