Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2007-11-14 18:59:11 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2007-11-14 18:59:11 (GMT)
commit411879e9de9f04ed47a268141cdafaef9b68486f (patch)
tree673027199ac92c89bc2e5da0ffdc9b6bdbe783e4 /lib
parentcd0e6aa1013a3c166881091c9a506240a38baa71 (diff)
More binding friendly API for SugarPreview.
Fix a leak.
Diffstat (limited to 'lib')
-rw-r--r--lib/sugar/sugar-preview.c21
-rw-r--r--lib/sugar/sugar-preview.h2
2 files changed, 18 insertions, 5 deletions
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;
};