summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Sabo <DanielSabo@gmail.com>2014-03-15 00:26:06 -0700
committerDaniel Sabo <DanielSabo@gmail.com>2014-03-15 12:11:08 -0700
commit1590d4b5818cd6735b3fd2af76b878a88bb18ac2 (patch)
tree97e99d65f2dc83fb8db931d3976f58ce613e6b93
parent11583e43911b4ce3066837e24f20cfd4d7adb16b (diff)
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.
-rw-r--r--gegl/buffer/gegl-buffer-access.c11
-rw-r--r--gegl/buffer/gegl-buffer-types.h1
-rw-r--r--gegl/buffer/gegl-buffer.c17
-rw-r--r--gegl/buffer/gegl-tile-backend-file-async.c8
4 files changed, 11 insertions, 26 deletions
diff --git a/gegl/buffer/gegl-buffer-access.c b/gegl/buffer/gegl-buffer-access.c
index 1789116e..fae90c25 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 daeb6239..c30974e6 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 88a624bb..1a26a35b 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 57c0362a..1885a044 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);
}