[gegl] GeglTileHandlerEmpty: Lazy allocation of 1st tile
- From: Daniel Sabo <daniels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] GeglTileHandlerEmpty: Lazy allocation of 1st tile
- Date: Fri, 15 Mar 2013 02:37:38 +0000 (UTC)
commit e6337513c07ae8096b62f84354e3b1c47567b6a9
Author: Daniel Sabo <DanielSabo gmail com>
Date: Thu Mar 14 19:17:50 2013 -0700
GeglTileHandlerEmpty: Lazy allocation of 1st tile
This is necessary to avoiding allocating a giant empty tile
underneath gegl_buffer_linear_new_from_data's buffer.
gegl/buffer/gegl-tile-handler-empty.c | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)
---
diff --git a/gegl/buffer/gegl-tile-handler-empty.c b/gegl/buffer/gegl-tile-handler-empty.c
index c4b40fe..c5d2614 100644
--- a/gegl/buffer/gegl-tile-handler-empty.c
+++ b/gegl/buffer/gegl-tile-handler-empty.c
@@ -58,6 +58,13 @@ get_tile (GeglTileSource *gegl_tile_source,
if (tile)
return tile;
+ if (G_UNLIKELY(!empty->tile))
+ {
+ gint tile_size = gegl_tile_backend_get_tile_size (empty->backend);
+ empty->tile = gegl_tile_new (tile_size);
+ memset (gegl_tile_get_data (empty->tile), 0x00, tile_size);
+ }
+
return gegl_tile_handler_dup_tile (GEGL_TILE_HANDLER (empty),
empty->tile, x, y, z);
}
@@ -94,11 +101,9 @@ GeglTileHandler *
gegl_tile_handler_empty_new (GeglTileBackend *backend)
{
GeglTileHandlerEmpty *empty = g_object_new (GEGL_TYPE_TILE_HANDLER_EMPTY, NULL);
- gint tile_size = gegl_tile_backend_get_tile_size (backend);
empty->backend = backend;
- empty->tile = gegl_tile_new (tile_size);
- memset (gegl_tile_get_data (empty->tile), 0x00, tile_size);
+ empty->tile = NULL;
return (void*)empty;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]