[gegl] buffer: make buffers ref their backend
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] buffer: make buffers ref their backend
- Date: Wed, 17 Apr 2013 21:15:50 +0000 (UTC)
commit 508921eb75d9f2ab14558190fefb5575cd815077
Author: Michael Natterer <mitch gimp org>
Date: Wed Apr 17 23:14:34 2013 +0200
buffer: make buffers ref their backend
gegl/buffer/gegl-buffer.c | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
---
diff --git a/gegl/buffer/gegl-buffer.c b/gegl/buffer/gegl-buffer.c
index 0ba4a9f..cffab69 100644
--- a/gegl/buffer/gegl-buffer.c
+++ b/gegl/buffer/gegl-buffer.c
@@ -192,7 +192,7 @@ gegl_buffer_get_property (GObject *gobject,
break;
case PROP_BACKEND:
- g_value_set_pointer (value, buffer->backend);
+ g_value_set_object (value, buffer->backend);
break;
case PROP_X:
@@ -320,8 +320,9 @@ gegl_buffer_set_property (GObject *gobject,
}
break;
case PROP_BACKEND:
- if (g_value_get_pointer (value))
- buffer->backend = g_value_get_pointer (value);
+ if (buffer->backend)
+ g_object_unref (buffer->backend);
+ buffer->backend = g_value_dup_object (value);
break;
default:
@@ -449,6 +450,12 @@ gegl_buffer_dispose (GObject *object)
_gegl_buffer_drop_hot_tile (buffer);
+ if (buffer->backend)
+ {
+ g_object_unref (buffer->backend);
+ buffer->backend = NULL;
+ }
+
G_OBJECT_CLASS (parent_class)->dispose (object);
}
@@ -496,7 +503,7 @@ gegl_buffer_backend (GeglBuffer *buffer)
tmp = gegl_buffer_backend2 (buffer);
if (tmp)
- buffer->backend = tmp;
+ buffer->backend = g_object_ref (tmp);
return (GeglTileBackend *) tmp;
}
@@ -615,7 +622,6 @@ gegl_buffer_constructor (GType type,
source = GEGL_TILE_SOURCE (gegl_tile_storage_new (backend));
gegl_tile_handler_set_source ((GeglTileHandler*)(buffer), source);
g_object_unref (source);
- g_object_unref (backend);
}
/* Connect to the changed signal of source, this is used by some backends
@@ -886,9 +892,10 @@ gegl_buffer_class_init (GeglBufferClass *class)
G_PARAM_CONSTRUCT));
g_object_class_install_property (gobject_class, PROP_BACKEND,
- g_param_spec_pointer ("backend", "backend", "A custom tile-backend
instance to use",
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT));
+ g_param_spec_object ("backend", "backend", "A custom tile-backend
instance to use",
+ GEGL_TYPE_TILE_BACKEND,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (gobject_class, PROP_TILE_HEIGHT,
g_param_spec_int ("tile-height", "tile-height", "height of a tile",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]