[lasem] cairo: avoid surface leak.
- From: Emmanuel Pacaud <emmanuel src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [lasem] cairo: avoid surface leak.
- Date: Thu, 11 Oct 2012 21:11:41 +0000 (UTC)
commit db2d9dd386d770279b4bd93653c2eec6ebbda9f6
Author: Emmanuel Pacaud <emmanuel gnome org>
Date: Thu Oct 11 23:11:24 2012 +0200
cairo: avoid surface leak.
src/lsmcairo.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/src/lsmcairo.c b/src/lsmcairo.c
index 919546f..1a7e9bb 100644
--- a/src/lsmcairo.c
+++ b/src/lsmcairo.c
@@ -40,11 +40,16 @@ struct _LsmFilterSurface {
LsmFilterSurface *
lsm_filter_surface_new (const char *name, unsigned int x0, unsigned int y0, unsigned int x1, unsigned int y1)
{
+ LsmFilterSurface *filter_surface;
cairo_surface_t *surface;
surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, x1 - x0, y1 - y0);
- return lsm_filter_surface_new_with_content (name, x0, y0, surface);
+ filter_surface = lsm_filter_surface_new_with_content (name, x0, y0, surface);
+
+ cairo_surface_destroy (surface);
+
+ return filter_surface;
}
LsmFilterSurface *
@@ -89,7 +94,7 @@ lsm_filter_surface_get_name (LsmFilterSurface *surface)
cairo_surface_t *
lsm_filter_surface_get_cairo_surface (LsmFilterSurface *surface)
{
- g_return_if_fail (surface != NULL);
+ g_return_val_if_fail (surface != NULL, NULL);
return surface->surface;
}
@@ -108,6 +113,7 @@ void
lsm_filter_surface_unref (LsmFilterSurface *filter_surface)
{
g_return_if_fail (filter_surface != NULL);
+ g_return_if_fail (filter_surface->ref_count > 0);
if (g_atomic_int_dec_and_test (&filter_surface->ref_count)) {
cairo_surface_destroy (filter_surface->surface);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]