[gegl] Don't manipulate BackendFile's header in GeglBuffer



commit 1590d4b5818cd6735b3fd2af76b878a88bb18ac2
Author: Daniel Sabo <DanielSabo gmail com>
Date:   Sat Mar 15 00:26:06 2014 -0700

    Don't manipulate BackendFile's header in GeglBuffer
    
    Instead sync the extent using the backend's public API and update
    BackendFile's values when the header gets written.

 gegl/buffer/gegl-buffer-access.c           |   11 ++---------
 gegl/buffer/gegl-buffer-types.h            |    1 -
 gegl/buffer/gegl-buffer.c                  |   17 +++--------------
 gegl/buffer/gegl-tile-backend-file-async.c |    8 ++++++--
 4 files changed, 11 insertions(+), 26 deletions(-)
---
diff --git a/gegl/buffer/gegl-buffer-access.c b/gegl/buffer/gegl-buffer-access.c
index 1789116..fae90c2 100644
--- a/gegl/buffer/gegl-buffer-access.c
+++ b/gegl/buffer/gegl-buffer-access.c
@@ -34,7 +34,6 @@
 #include "gegl-buffer-private.h"
 #include "gegl-tile-storage.h"
 #include "gegl-sampler.h"
-#include "gegl-buffer-index.h"
 #include "gegl-tile-backend.h"
 #include "gegl-buffer-iterator.h"
 #include "gegl-buffer-cl-cache.h"
@@ -177,14 +176,8 @@ gegl_buffer_flush (GeglBuffer *buffer)
 
   _gegl_buffer_drop_hot_tile (buffer);
 
-  if ((GeglBufferHeader*)(backend->priv->header))
-    {
-      GeglBufferHeader* header = backend->priv->header;
-      header->x = buffer->extent.x;
-      header->y = buffer->extent.y;
-      header->width =buffer->extent.width;
-      header->height =buffer->extent.height;
-    }
+  if (backend)
+    gegl_tile_backend_set_extent (backend, &buffer->extent);
 
   gegl_tile_source_command (GEGL_TILE_SOURCE (buffer),
                             GEGL_TILE_FLUSH, 0,0,0,NULL);
diff --git a/gegl/buffer/gegl-buffer-types.h b/gegl/buffer/gegl-buffer-types.h
index daeb623..c30974e 100644
--- a/gegl/buffer/gegl-buffer-types.h
+++ b/gegl/buffer/gegl-buffer-types.h
@@ -40,7 +40,6 @@ struct _GeglTileBackendPrivate
 
   GeglRectangle extent;
 
-  gpointer    header;
   gpointer    storage;
   gboolean    shared;
 };
diff --git a/gegl/buffer/gegl-buffer.c b/gegl/buffer/gegl-buffer.c
index 88a624b..1a26a35 100644
--- a/gegl/buffer/gegl-buffer.c
+++ b/gegl/buffer/gegl-buffer.c
@@ -290,26 +290,15 @@ gboolean
 gegl_buffer_set_extent (GeglBuffer          *buffer,
                         const GeglRectangle *extent)
 {
-  GeglBufferHeader *header;
-
   g_return_val_if_fail (GEGL_IS_BUFFER (buffer), FALSE);
 
   buffer->extent = *extent;
 
-  header = gegl_buffer_backend (buffer)->priv->header;
-
-  if (header)
-    {
-      header->x = buffer->extent.x;
-      header->y = buffer->extent.y;
-      header->width = buffer->extent.width;
-      header->height = buffer->extent.height;
-    }
+  if (buffer->backend)
+    gegl_tile_backend_set_extent (buffer->backend, &buffer->extent);
 
   if (buffer->abyss_tracks_extent)
-    {
-      buffer->abyss = *extent;
-    }
+    buffer->abyss = *extent;
 
   return TRUE;
 }
diff --git a/gegl/buffer/gegl-tile-backend-file-async.c b/gegl/buffer/gegl-tile-backend-file-async.c
index 57c0362..1885a04 100644
--- a/gegl/buffer/gegl-tile-backend-file-async.c
+++ b/gegl/buffer/gegl-tile-backend-file-async.c
@@ -523,9 +523,15 @@ gegl_tile_backend_file_write_header (GeglTileBackendFile *self)
 {
   GeglFileBackendThreadParams *params = g_new0 (GeglFileBackendThreadParams, 1);
   guchar *new_source = g_malloc (256);
+  GeglRectangle roi = gegl_tile_backend_get_extent ((GeglTileBackend *)self);
 
   gegl_tile_backend_file_ensure_exist (self);
 
+  self->header.x = roi.x;
+  self->header.y = roi.y;
+  self->header.width = roi.width;
+  self->header.height = roi.height;
+
   memcpy (new_source, &(self->header), 256);
 
   params->operation = OP_WRITE;
@@ -1209,8 +1215,6 @@ gegl_tile_backend_file_constructed (GObject *object)
 
   g_assert (self->file);
 
-  backend->priv->header = &self->header;
-
   gegl_tile_backend_set_flush_on_destroy (backend, FALSE);
 }
 


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