Fix:gtk_drawing_area:Destroy the image cache hash_table only when we have no parent
authorwoglinde <woglinde@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Sun, 17 Apr 2011 21:14:28 +0000 (21:14 +0000)
committerwoglinde <woglinde@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Sun, 17 Apr 2011 21:14:28 +0000 (21:14 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@4438 ffa7fe5e-494d-0410-b361-a75ebd5db220

navit/navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c

index 67aa3c6..38666f3 100644 (file)
@@ -125,7 +125,8 @@ graphics_destroy_image(gpointer data)
 static void
 graphics_destroy(struct graphics_priv *gr)
 {
-       g_hash_table_destroy(hImageData);
+       if (!gr->parent)
+               g_hash_table_destroy(hImageData);
 }
 
 static void
@@ -224,14 +225,14 @@ image_new(struct graphics_priv *gr, struct graphics_image_methods *meth, char *n
        }
        else if(curr_elem) {
                //found and OK -> use hashtable entry
+               g_free(hash_key);
                *w = curr_elem->w;
                *h = curr_elem->h;
                hot->x = curr_elem->w / 2 - 1;
                hot->y = curr_elem->h / 2 - 1;
-               g_free(hash_key);
-               g_object_ref(curr_elem->pixbuf);
                ret=g_new0(struct graphics_image_priv, 1);
                *ret = *curr_elem;
+               g_object_ref(ret->pixbuf);
                return ret;
        }
        else {