X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=libchimara%2Fgraphics.c;h=1ab5a359b68ba304bf3d0a1c5ec90d357bc13ff0;hb=cdb84c7c776f214f41ba1a509efb2494e7ed1baf;hp=afe3e76386a75899cda8850260cd68f566513cb8;hpb=f19a194bd066ea4320c1c6b6b8c5a375f7787af5;p=projects%2Fchimara%2Fchimara.git diff --git a/libchimara/graphics.c b/libchimara/graphics.c index afe3e76..1ab5a35 100644 --- a/libchimara/graphics.c +++ b/libchimara/graphics.c @@ -63,7 +63,7 @@ load_image_from_blorb(giblorb_result_t resource, glui32 image, gint width, gint g_mutex_unlock(glk_data->resource_lock); info->pixbuf = gdk_pixbuf_loader_get_pixbuf(loader); - gdk_pixbuf_ref(info->pixbuf); + g_object_ref(info->pixbuf); g_object_unref(loader); return info; @@ -89,7 +89,7 @@ load_image_from_file(const gchar *filename, glui32 image, gint width, gint heigh g_free(info); return NULL; } - gdk_pixbuf_ref(info->pixbuf); + g_object_ref(info->pixbuf); return info; } @@ -123,12 +123,15 @@ load_image_in_cache(glui32 image, gint width, gint height) info = load_image_from_blorb(resource, image, width, height); } + if(info == NULL) + return NULL; + /* Store the image in the cache */ gdk_threads_enter(); if( g_slist_length(glk_data->image_cache) >= IMAGE_CACHE_MAX_NUM ) { struct image_info *head = (struct image_info*) glk_data->image_cache->data; - gdk_pixbuf_unref(head->pixbuf); + g_object_unref(head->pixbuf); g_free(head); glk_data->image_cache = g_slist_remove_link(glk_data->image_cache, glk_data->image_cache); } @@ -172,7 +175,7 @@ on_pixbuf_closed(GdkPixbufLoader *loader, gpointer data) void clear_image_cache(struct image_info *data, gpointer user_data) { - gdk_pixbuf_unref(data->pixbuf); + g_object_unref(data->pixbuf); g_free(data); }