diff options
author | Daniel Sabo <DanielSabo@gmail.com> | 2014-03-15 00:26:06 -0700 |
---|---|---|
committer | Daniel Sabo <DanielSabo@gmail.com> | 2014-03-15 12:11:08 -0700 |
commit | 1590d4b5818cd6735b3fd2af76b878a88bb18ac2 (patch) | |
tree | 97e99d65f2dc83fb8db931d3976f58ce613e6b93 | |
parent | 11583e43911b4ce3066837e24f20cfd4d7adb16b (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.c | 11 | ||||
-rw-r--r-- | gegl/buffer/gegl-buffer-types.h | 1 | ||||
-rw-r--r-- | gegl/buffer/gegl-buffer.c | 17 | ||||
-rw-r--r-- | 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 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); } |