[gegl] gegl: use RAM backend for linear buffers
- From: Massimo Valentini <mvalentini src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] gegl: use RAM backend for linear buffers
- Date: Thu, 28 Nov 2013 17:57:12 +0000 (UTC)
commit 9a13353487a8e19f30ab9806a68188a303657ff2
Author: Massimo Valentini <mvalentini src gnome org>
Date: Thu Nov 28 18:45:02 2013 +0100
gegl: use RAM backend for linear buffers
gegl/buffer/gegl-buffer-linear.c | 41 +++++++++++++++++++++++--------------
1 files changed, 25 insertions(+), 16 deletions(-)
---
diff --git a/gegl/buffer/gegl-buffer-linear.c b/gegl/buffer/gegl-buffer-linear.c
index b57ab6f..cedb82f 100644
--- a/gegl/buffer/gegl-buffer-linear.c
+++ b/gegl/buffer/gegl-buffer-linear.c
@@ -13,10 +13,9 @@
#include "gegl-tile-handler-cache.h"
#include "gegl-utils.h"
-static GeglBuffer *
-gegl_buffer_linear_new2 (const GeglRectangle *extent,
- const Babl *format,
- gint rowstride)
+GeglBuffer *
+gegl_buffer_linear_new (const GeglRectangle *extent,
+ const Babl *format)
{
GeglBuffer *buffer;
@@ -28,9 +27,6 @@ gegl_buffer_linear_new2 (const GeglRectangle *extent,
if (format==NULL)
format = babl_format ("RGBA float");
- if (rowstride <= 0)
- rowstride = extent->width;
-
/* creating a linear buffer for GeglBuffer is a matter of
* requesting the correct parameters when creating the
* buffer
@@ -42,7 +38,7 @@ gegl_buffer_linear_new2 (const GeglRectangle *extent,
"shift-y", -extent->y,
"width", extent->width,
"height", extent->height,
- "tile-width", rowstride,
+ "tile-width", extent->width,
"tile-height", extent->height,
"format", format,
NULL);
@@ -52,13 +48,6 @@ gegl_buffer_linear_new2 (const GeglRectangle *extent,
return buffer;
}
-GeglBuffer *
-gegl_buffer_linear_new (const GeglRectangle *extent,
- const Babl *format)
-{
- return gegl_buffer_linear_new2 (extent, format, 0);
-}
-
/* XXX:
* this should probably be abstracted into a gegl_buffer_cache_insert_tile */
void gegl_tile_handler_cache_insert (GeglTileHandlerCache *cache,
@@ -77,6 +66,11 @@ gegl_buffer_linear_new_from_data (const gpointer data,
{
GeglBuffer *buffer;
+ if (extent==NULL)
+ {
+ g_error ("got a NULL extent");
+ }
+
g_assert (format);
if (rowstride <= 0) /* handle both 0 and negative coordinates as a request
@@ -85,7 +79,21 @@ gegl_buffer_linear_new_from_data (const gpointer data,
rowstride = extent->width;
else
rowstride = rowstride / babl_format_get_bytes_per_pixel (format);
- buffer = gegl_buffer_linear_new2 (extent, format, rowstride);
+
+ buffer = g_object_new (GEGL_TYPE_BUFFER,
+ "x", extent->x,
+ "y", extent->y,
+ "shift-x", -extent->x,
+ "shift-y", -extent->y,
+ "width", extent->width,
+ "height", extent->height,
+ "tile-width", rowstride,
+ "tile-height", extent->height,
+ "format", format,
+ "path", "RAM",
+ NULL);
+
+ g_object_set_data (G_OBJECT (buffer), "is-linear", (void*)0xf00);
{
GeglTile *tile = gegl_tile_new_bare ();
@@ -96,6 +104,7 @@ gegl_buffer_linear_new_from_data (const gpointer data,
tile->z = 0;
tile->next_shared = tile;
tile->prev_shared = tile;
+ tile->rev = tile->stored_rev + 1;
gegl_tile_set_data_full (tile,
(gpointer) data,
babl_format_get_bytes_per_pixel (format) * rowstride * extent->height,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]