From 411879e9de9f04ed47a268141cdafaef9b68486f Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Wed, 14 Nov 2007 18:59:11 +0000 Subject: More binding friendly API for SugarPreview. Fix a leak. --- (limited to 'lib') diff --git a/lib/sugar/sugar-preview.c b/lib/sugar/sugar-preview.c index d20f609..f54045b 100644 --- a/lib/sugar/sugar-preview.c +++ b/lib/sugar/sugar-preview.c @@ -39,16 +39,22 @@ sugar_preview_get_pixbuf(SugarPreview *preview) { GdkPixbuf *pixbuf; + if (preview->pixbuf != NULL) { + return preview->pixbuf; + } + if (preview->image == NULL) { return NULL; } - pixbuf = gdk_pixbuf_get_from_image(NULL, preview->image, NULL, - 0, 0, 0, 0, - preview->image->width, - preview->image->height); + preview->pixbuf = gdk_pixbuf_get_from_image(NULL, preview->image, NULL, + 0, 0, 0, 0, + preview->image->width, + preview->image->height); + g_object_unref(G_OBJECT(preview->image)); + preview->image = NULL; - return pixbuf; + return preview->pixbuf; } void @@ -58,6 +64,10 @@ sugar_preview_clear(SugarPreview *preview) g_object_unref(G_OBJECT(preview->image)); preview->image = NULL; } + if (preview->pixbuf != NULL) { + g_object_unref(G_OBJECT(preview->pixbuf)); + preview->pixbuf = NULL; + } } void @@ -104,4 +114,5 @@ static void sugar_preview_init(SugarPreview *preview) { preview->image = NULL; + preview->pixbuf = NULL; } diff --git a/lib/sugar/sugar-preview.h b/lib/sugar/sugar-preview.h index 1cd3bb4..6029cc1 100644 --- a/lib/sugar/sugar-preview.h +++ b/lib/sugar/sugar-preview.h @@ -38,6 +38,8 @@ struct _SugarPreview { GObject base_instance; GdkImage *image; + GdkPixbuf *pixbuf; + int width; int height; }; -- cgit v0.9.1