[gimp] imagemap: unref buffers as soon as possible
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] imagemap: unref buffers as soon as possible
- Date: Wed, 2 May 2012 15:56:49 +0000 (UTC)
commit 35f1518afd0c70a6d2db93047b9d63ebc20857e7
Author: Ãyvind KolÃs <pippin gimp org>
Date: Tue Mar 13 17:12:45 2012 +0000
imagemap: unref buffers as soon as possible
app/core/gimpimagemap.c | 40 ++++++++++------------------------------
1 files changed, 10 insertions(+), 30 deletions(-)
---
diff --git a/app/core/gimpimagemap.c b/app/core/gimpimagemap.c
index 1783117..d890b8c 100644
--- a/app/core/gimpimagemap.c
+++ b/app/core/gimpimagemap.c
@@ -81,12 +81,10 @@ struct _GimpImageMap
PixelRegionIterator *PRI;
GeglNode *gegl;
- GeglBuffer *input_buffer;
GeglNode *input;
GeglNode *translate;
GeglNode *operation;
GeglNode *output;
- GeglBuffer *output_buffer;
GeglProcessor *processor;
guint idle_id;
@@ -181,9 +179,6 @@ gimp_image_map_init (GimpImageMap *image_map)
image_map->pixel_count = 0;
- image_map->input_buffer = NULL;
- image_map->output_buffer = NULL;
-
if (image_map->timer)
g_timer_stop (image_map->timer);
}
@@ -204,17 +199,6 @@ gimp_image_map_finalize (GObject *object)
{
GimpImageMap *image_map = GIMP_IMAGE_MAP (object);
- if (image_map->input_buffer)
- {
- g_object_unref (image_map->input_buffer);
- image_map->input_buffer = NULL;
- }
- if (image_map->output_buffer)
- {
- g_object_unref (image_map->output_buffer);
- image_map->output_buffer = NULL;
- }
-
if (image_map->undo_desc)
{
g_free (image_map->undo_desc);
@@ -394,20 +378,13 @@ gimp_image_map_apply (GimpImageMap *image_map,
if (image_map->operation)
{
- if (image_map->input_buffer)
- {
- g_object_unref (image_map->input_buffer);
- image_map->input_buffer = NULL;
- }
- if (image_map->output_buffer)
- {
- g_object_unref (image_map->output_buffer);
- image_map->output_buffer = NULL;
- }
+ GeglBuffer *input_buffer;
+ GeglBuffer *output_buffer;
- image_map->input_buffer =
+ input_buffer =
gimp_tile_manager_get_gegl_buffer (image_map->undo_tiles, FALSE);
- image_map->output_buffer = gimp_tile_manager_get_gegl_buffer (gimp_drawable_get_shadow_tiles (image_map->drawable), TRUE);
+ output_buffer =
+ gimp_tile_manager_get_gegl_buffer (gimp_drawable_get_shadow_tiles (image_map->drawable), TRUE);
if (! image_map->gegl)
{
@@ -481,7 +458,7 @@ gimp_image_map_apply (GimpImageMap *image_map,
}
gegl_node_set (image_map->input,
- "buffer", image_map->input_buffer,
+ "buffer", input_buffer,
NULL);
gegl_node_set (image_map->translate,
@@ -490,11 +467,14 @@ gimp_image_map_apply (GimpImageMap *image_map,
NULL);
gegl_node_set (image_map->output,
- "buffer", image_map->output_buffer,
+ "buffer", output_buffer,
NULL);
image_map->processor = gegl_node_new_processor (image_map->output,
&rect);
+
+ g_object_unref (input_buffer);
+ g_object_unref (output_buffer);
}
else
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]