[gegl] buffer: refactor some redundant calls away



commit 2d439a13f11d935835ec67d6b70a828893761ecd
Author: �yvind Kolås <pippin gimp org>
Date:   Tue Jul 20 00:50:48 2010 +0100

    buffer: refactor some redundant calls away

 gegl/buffer/gegl-buffer-access.c      |   13 ++++++++-----
 gegl/buffer/gegl-tile-handler-chain.c |   10 +++-------
 gegl/buffer/gegl-tile-handler-chain.h |    4 ++++
 gegl/buffer/gegl-tile-storage.c       |    4 ++--
 4 files changed, 17 insertions(+), 14 deletions(-)
---
diff --git a/gegl/buffer/gegl-buffer-access.c b/gegl/buffer/gegl-buffer-access.c
index 5d7773d..de729d4 100644
--- a/gegl/buffer/gegl-buffer-access.c
+++ b/gegl/buffer/gegl-buffer-access.c
@@ -293,19 +293,22 @@ gegl_buffer_get_pixel (GeglBuffer *buffer,
 void
 gegl_buffer_flush (GeglBuffer *buffer)
 {
+  GeglTileBackend *backend;
+
   g_return_if_fail (GEGL_IS_BUFFER (buffer));
+  backend = gegl_buffer_backend (buffer);
 
   if (buffer->hot_tile)
     {
       gegl_tile_unref (buffer->hot_tile);
       buffer->hot_tile = NULL;
     }
-  if ((GeglBufferHeader*)(gegl_buffer_backend (buffer)->header))
+  if ((GeglBufferHeader*)(backend->header))
     {
-      ((GeglBufferHeader*)(gegl_buffer_backend (buffer)->header))->x =buffer->extent.x;
-      ((GeglBufferHeader*)(gegl_buffer_backend (buffer)->header))->y =buffer->extent.y;
-      ((GeglBufferHeader*)(gegl_buffer_backend (buffer)->header))->width =buffer->extent.width;
-      ((GeglBufferHeader*)(gegl_buffer_backend (buffer)->header))->height =buffer->extent.height;
+      ((GeglBufferHeader*)(backend->header))->x =buffer->extent.x;
+      ((GeglBufferHeader*)(backend->header))->y =buffer->extent.y;
+      ((GeglBufferHeader*)(backend->header))->width =buffer->extent.width;
+      ((GeglBufferHeader*)(backend->header))->height =buffer->extent.height;
     }
 
   gegl_tile_source_command (GEGL_TILE_SOURCE (buffer),
diff --git a/gegl/buffer/gegl-tile-handler-chain.c b/gegl/buffer/gegl-tile-handler-chain.c
index ff0aa88..0401e51 100644
--- a/gegl/buffer/gegl-tile-handler-chain.c
+++ b/gegl/buffer/gegl-tile-handler-chain.c
@@ -26,8 +26,6 @@
 
 G_DEFINE_TYPE (GeglTileHandlerChain, gegl_tile_handler_chain, GEGL_TYPE_TILE_HANDLER)
 
-static void   gegl_tile_handler_chain_rebind (GeglTileHandlerChain *tile_handler_chain);
-
 static void
 gegl_tile_handler_chain_nuke_cache (GeglTileHandlerChain *tile_handler_chain)
 {
@@ -42,7 +40,6 @@ gegl_tile_handler_chain_nuke_cache (GeglTileHandlerChain *tile_handler_chain)
             {
               g_object_unref (iter->data);
               tile_handler_chain->chain = g_slist_remove (tile_handler_chain->chain, iter->data);
-              gegl_tile_handler_chain_rebind (tile_handler_chain);
               break;
             }
           iter = iter->next;
@@ -128,12 +125,11 @@ gegl_tile_handler_chain_init (GeglTileHandlerChain *self)
 }
 
 
-static void
-gegl_tile_handler_chain_rebind (GeglTileHandlerChain *tile_handler_chain)
+void
+gegl_tile_handler_chain_bind (GeglTileHandlerChain *tile_handler_chain)
 {
   GSList *iter;
 
-
   iter = tile_handler_chain->chain;
   while (iter)
     {
@@ -159,7 +155,7 @@ gegl_tile_handler_chain_add (GeglTileHandlerChain *tile_handler_chain,
                              GeglTileHandler      *handler)
 {
   tile_handler_chain->chain = g_slist_prepend (tile_handler_chain->chain, handler);
-  gegl_tile_handler_chain_rebind (tile_handler_chain);
+  /*gegl_tile_handler_chain_bind (tile_handler_chain);*/
   return handler;
 }
 
diff --git a/gegl/buffer/gegl-tile-handler-chain.h b/gegl/buffer/gegl-tile-handler-chain.h
index e21ae84..342a040 100644
--- a/gegl/buffer/gegl-tile-handler-chain.h
+++ b/gegl/buffer/gegl-tile-handler-chain.h
@@ -58,6 +58,10 @@ GeglTileHandler * gegl_tile_handler_chain_add
                                       (GeglTileHandlerChain *tile_handler_chain,
                                        GeglTileHandler      *handler);
 
+/* Binds the tile-handlers in the chain together.
+ */
+void gegl_tile_handler_chain_bind (GeglTileHandlerChain *tile_handler_chain);
+
 /* returns the first matching handler of a specified type (or NULL) */
 GeglTileHandler * gegl_tile_handler_chain_get_first
                                       (GeglTileHandlerChain *tile_handler_chain,
diff --git a/gegl/buffer/gegl-tile-storage.c b/gegl/buffer/gegl-tile-storage.c
index badb283..fde7e6c 100644
--- a/gegl/buffer/gegl-tile-storage.c
+++ b/gegl/buffer/gegl-tile-storage.c
@@ -238,7 +238,6 @@ gegl_tile_storage_constructor (GType                  type,
     gegl_tile_handler_chain_add (tile_handler_chain,
                       g_object_new (GEGL_TYPE_TILE_HANDLER_LOG, NULL));
 
-
   cache = g_object_new (GEGL_TYPE_TILE_HANDLER_CACHE,
                         NULL);
   empty = g_object_new (GEGL_TYPE_TILE_HANDLER_EMPTY,
@@ -253,7 +252,6 @@ gegl_tile_storage_constructor (GType                  type,
   gegl_tile_handler_chain_add (tile_handler_chain, zoom);
   gegl_tile_handler_chain_add (tile_handler_chain, empty);
 
-
   if (g_getenv("GEGL_LOG_TILE_CACHE"))
     gegl_tile_handler_chain_add (tile_handler_chain,
                               g_object_new (GEGL_TYPE_TILE_HANDLER_LOG, NULL));
@@ -261,6 +259,8 @@ gegl_tile_storage_constructor (GType                  type,
   g_object_set_data (G_OBJECT (empty), "cache", cache);
   g_object_set_data (G_OBJECT (zoom), "cache", cache);
 
+  gegl_tile_handler_chain_bind (tile_handler_chain);
+
   {
     GeglTileBackend *backend;
     backend = gegl_buffer_backend (object);



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