[gegl] buffer: use GDestroyNotify for linear buffers



commit c2b97d9417de9bbf8cb4ef5c6be5c730224a3baf
Author: Ãyvind KolÃs <pippin gimp org>
Date:   Sat Mar 17 22:41:10 2012 +0000

    buffer: use GDestroyNotify for linear buffers

 gegl/buffer/gegl-buffer-linear.c  |    2 +-
 gegl/buffer/gegl-buffer-private.h |    4 ++--
 gegl/buffer/gegl-tile.c           |   23 ++++++++++-------------
 gegl/buffer/gegl-tile.h           |    2 +-
 gegl/gegl-types.h                 |    5 -----
 5 files changed, 14 insertions(+), 22 deletions(-)
---
diff --git a/gegl/buffer/gegl-buffer-linear.c b/gegl/buffer/gegl-buffer-linear.c
index 447ea8a..a2b5d82 100644
--- a/gegl/buffer/gegl-buffer-linear.c
+++ b/gegl/buffer/gegl-buffer-linear.c
@@ -93,7 +93,7 @@ gegl_buffer_linear_new_from_data (const gpointer       data,
     gegl_tile_set_data_full (tile,
                              (gpointer) data,
                              babl_format_get_bytes_per_pixel (format) * rowstride * extent->height,
-                             (GeglDestroyNotify) destroy_fn,
+                             destroy_fn,
                              destroy_fn_data);
 
     if (buffer->tile_storage->cache)
diff --git a/gegl/buffer/gegl-buffer-private.h b/gegl/buffer/gegl-buffer-private.h
index b540eac..d4712d1 100644
--- a/gegl/buffer/gegl-buffer-private.h
+++ b/gegl/buffer/gegl-buffer-private.h
@@ -163,8 +163,8 @@ struct _GeglTile
   GeglTile        *prev_shared;
 
   /* called when the tile is about to be destroyed */
-  GeglDestroyNotify destroy_notify;
-  gpointer          destroy_notify_data;
+  GDestroyNotify   destroy_notify;
+  gpointer         destroy_notify_data;
 
   /* called when the tile has been unlocked which typically means tile
    * data has changed
diff --git a/gegl/buffer/gegl-tile.c b/gegl/buffer/gegl-tile.c
index 308dbe9..0cad9cc 100644
--- a/gegl/buffer/gegl-tile.c
+++ b/gegl/buffer/gegl-tile.c
@@ -39,11 +39,6 @@
 
 #include "gegl-utils.h"
 
-static void default_free (gpointer data,
-                          gpointer userdata)
-{
-  gegl_free (data);
-}
 
 GeglTile *gegl_tile_ref (GeglTile *tile)
 {
@@ -67,8 +62,11 @@ void gegl_tile_unref (GeglTile *tile)
     {
       if (tile->next_shared == tile)
         { /* no clones */
+
           if (tile->destroy_notify)
-            tile->destroy_notify (tile->data, tile->destroy_notify_data);
+            tile->destroy_notify (tile->destroy_notify_data);
+          else
+            gegl_free (tile->data);
           tile->data = NULL;
         }
       else
@@ -101,7 +99,6 @@ gegl_tile_new_bare (void)
   tile->prev_shared = tile;
 
   tile->mutex = g_mutex_new ();
-  tile->destroy_notify = default_free;
 
   return tile;
 }
@@ -163,7 +160,7 @@ gegl_tile_unclone (GeglTile *tile)
        * create a local copy
        */
       tile->data                     = gegl_memdup (tile->data, tile->size);
-      tile->destroy_notify           = default_free;
+      tile->destroy_notify           = NULL;
       tile->destroy_notify_data      = NULL;
       tile->prev_shared->next_shared = tile->next_shared;
       tile->next_shared->prev_shared = tile->prev_shared;
@@ -302,11 +299,11 @@ void gegl_tile_set_data (GeglTile *tile,
   tile->size = pixel_data_size;
 }
 
-void gegl_tile_set_data_full (GeglTile         *tile,
-                              gpointer          pixel_data,
-                              gint              pixel_data_size,
-                              GeglDestroyNotify destroy_notify,
-                              gpointer          destroy_notify_data)
+void gegl_tile_set_data_full (GeglTile      *tile,
+                              gpointer       pixel_data,
+                              gint           pixel_data_size,
+                              GDestroyNotify destroy_notify,
+                              gpointer       destroy_notify_data)
 {
   tile->data                = pixel_data;
   tile->size                = pixel_data_size;
diff --git a/gegl/buffer/gegl-tile.h b/gegl/buffer/gegl-tile.h
index 8732c63..e68acc5 100644
--- a/gegl/buffer/gegl-tile.h
+++ b/gegl/buffer/gegl-tile.h
@@ -55,7 +55,7 @@ void         gegl_tile_set_data       (GeglTile         *tile,
 void         gegl_tile_set_data_full  (GeglTile         *tile,
                                        gpointer          pixel_data,
                                        gint              pixel_data_size,
-                                       GeglDestroyNotify destroy_notify,
+                                       GDestroyNotify    destroy_notify,
                                        gpointer          destroy_notify_data);
 
 void         gegl_tile_set_unlock_notify
diff --git a/gegl/gegl-types.h b/gegl/gegl-types.h
index 9726daa..8ff5048 100644
--- a/gegl/gegl-types.h
+++ b/gegl/gegl-types.h
@@ -66,11 +66,6 @@ GType gegl_processor_get_type  (void) G_GNUC_CONST;
 #define GEGL_PROCESSOR(obj)    (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEGL_TYPE_PROCESSOR, GeglProcessor))
 #define GEGL_IS_PROCESSOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEGL_TYPE_PROCESSOR))
 
-
-typedef void         (*GeglDestroyNotify)      (gpointer pixel_data,
-                                                gpointer user_data);
-
-
 G_END_DECLS
 
 #endif /* __GEGL_TYPES_H__ */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]