[gegl/gsoc2009-gpu: 6/15] Adjust gegl_tile_new() params and update all references to it
- From: Martin Nordholts <martinn src gnome org>
- To: svn-commits-list gnome org
- Subject: [gegl/gsoc2009-gpu: 6/15] Adjust gegl_tile_new() params and update all references to it
- Date: Wed, 24 Jun 2009 05:38:29 +0000 (UTC)
commit c39364d47c73d20ba08c12faf043a40865429c72
Author: Jerson Michael Perpetua <jersonperpetua gmail com>
Date: Wed Jun 17 01:18:22 2009 +0800
Adjust gegl_tile_new() params and update all references to it
A GeglGpuTexture needs the tile's width, height and format during
initialization. This set of modifications replaces gegl_tile_new()'s
previous parameter list to instead include the aforementioned
requirements for GeglGpuTexture initialization. This set of changes
also updates all references to gegl_tile_new() to reflect the new
parameter list.
gegl/buffer/gegl-tile-backend-file.c | 5 ++++-
gegl/buffer/gegl-tile-backend-ram.c | 5 ++++-
gegl/buffer/gegl-tile-backend-tiledir.c | 5 ++++-
gegl/buffer/gegl-tile-handler-empty.c | 6 +++++-
gegl/buffer/gegl-tile-handler-zoom.c | 2 +-
gegl/buffer/gegl-tile.c | 9 ++++++---
gegl/buffer/gegl-tile.h | 4 +++-
7 files changed, 27 insertions(+), 9 deletions(-)
---
diff --git a/gegl/buffer/gegl-tile-backend-file.c b/gegl/buffer/gegl-tile-backend-file.c
index da29058..8b240a6 100644
--- a/gegl/buffer/gegl-tile-backend-file.c
+++ b/gegl/buffer/gegl-tile-backend-file.c
@@ -458,7 +458,10 @@ gegl_tile_backend_file_get_tile (GeglTileSource *self,
if (!entry)
return NULL;
- tile = gegl_tile_new (backend->tile_size);
+ tile = gegl_tile_new (backend->tile_width,
+ backend->tile_height,
+ backend->format);
+
tile->rev = entry->rev;
tile->stored_rev = entry->rev;
diff --git a/gegl/buffer/gegl-tile-backend-ram.c b/gegl/buffer/gegl-tile-backend-ram.c
index c2bee78..3a6a28f 100644
--- a/gegl/buffer/gegl-tile-backend-ram.c
+++ b/gegl/buffer/gegl-tile-backend-ram.c
@@ -155,7 +155,10 @@ get_tile (GeglTileSource *tile_store,
if (!entry)
return NULL;
- tile = gegl_tile_new (backend->tile_size);
+ tile = gegl_tile_new (backend->tile_width,
+ backend->tile_height,
+ backend->format);
+
tile->stored_rev = 1;
tile->rev = 1;
diff --git a/gegl/buffer/gegl-tile-backend-tiledir.c b/gegl/buffer/gegl-tile-backend-tiledir.c
index 221e1ff..be45ac2 100644
--- a/gegl/buffer/gegl-tile-backend-tiledir.c
+++ b/gegl/buffer/gegl-tile-backend-tiledir.c
@@ -152,7 +152,10 @@ get_tile (GeglTileSource *tile_store,
entry.y = y;
entry.z = z;
- tile = gegl_tile_new (backend->tile_size);
+ tile = gegl_tile_new (backend->tile_width,
+ backend->tile_height,
+ backend->format);
+
tile->stored_rev = 1;
tile->rev = 1;
diff --git a/gegl/buffer/gegl-tile-handler-empty.c b/gegl/buffer/gegl-tile-handler-empty.c
index b958350..f9e8461 100644
--- a/gegl/buffer/gegl-tile-handler-empty.c
+++ b/gegl/buffer/gegl-tile-handler-empty.c
@@ -128,6 +128,7 @@ constructor (GType type,
gint tile_width;
gint tile_height;
gint tile_size;
+ Babl *format;
object = G_OBJECT_CLASS (gegl_tile_handler_empty_parent_class)->constructor (type, n_params, params);
@@ -137,9 +138,12 @@ constructor (GType type,
g_object_get (empty->backend, "tile-width", &tile_width,
"tile-height", &tile_height,
"tile-size", &tile_size,
+ "format", (gpointer) &format,
NULL);
+
+ empty->tile = gegl_tile_new (tile_width, tile_height, format);
+
/* FIXME: need babl format here */
- empty->tile = gegl_tile_new (tile_size);
memset (gegl_tile_get_data (empty->tile), 0x00, tile_size);
return object;
diff --git a/gegl/buffer/gegl-tile-handler-zoom.c b/gegl/buffer/gegl-tile-handler-zoom.c
index e574433..af126e7 100644
--- a/gegl/buffer/gegl-tile-handler-zoom.c
+++ b/gegl/buffer/gegl-tile-handler-zoom.c
@@ -261,7 +261,7 @@ get_tile (GeglTileSource *gegl_tile_source,
g_assert (tile == NULL);
if (tile == NULL)
{
- tile = gegl_tile_new (tile_size);
+ tile = gegl_tile_new (tile_width, tile_height, format);
tile->x = x;
tile->y = y;
diff --git a/gegl/buffer/gegl-tile.c b/gegl/buffer/gegl-tile.c
index a05e3e4..22a6f9a 100644
--- a/gegl/buffer/gegl-tile.c
+++ b/gegl/buffer/gegl-tile.c
@@ -238,12 +238,15 @@ gegl_tile_dup (GeglTile *src)
}
GeglTile *
-gegl_tile_new (gint size)
+gegl_tile_new (gint width,
+ gint height,
+ const Babl *format)
{
GeglTile *tile = g_object_new (GEGL_TYPE_TILE, NULL);
- tile->data = gegl_malloc (size);
- tile->size = size;
+ tile->size = width * height * babl_format_get_bytes_per_pixel (format);
+ tile->data = gegl_malloc (tile->size);
+ tile->gpu_data = gegl_gpu_texture_new (width, height, format);
tile->stored_rev = 1;
return tile;
diff --git a/gegl/buffer/gegl-tile.h b/gegl/buffer/gegl-tile.h
index a691c60..7736e4a 100644
--- a/gegl/buffer/gegl-tile.h
+++ b/gegl/buffer/gegl-tile.h
@@ -80,7 +80,9 @@ struct _GeglTileClass
GType gegl_tile_get_type (void) G_GNUC_CONST;
-GeglTile * gegl_tile_new (gint size);
+GeglTile *gegl_tile_new (gint width,
+ gint height,
+ const Babl *format);
void * gegl_tile_get_format (GeglTile *tile);
gint gegl_tile_get_width (GeglTile *tile);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]