[gegl] buffer: use GDestroyNotify for linear buffers
- From: Ãyvind KolÃs <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] buffer: use GDestroyNotify for linear buffers
- Date: Sat, 17 Mar 2012 22:42:04 +0000 (UTC)
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]