[gegl] gegl_tile_iterator: simplify again and remove a goto
- From: Ãyvind KolÃs <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] gegl_tile_iterator: simplify again and remove a goto
- Date: Sat, 24 Mar 2012 00:32:58 +0000 (UTC)
commit 78ea789e87246bdf07dfd6faccd7465618e02147
Author: Michael Murà <batolettre gmail com>
Date: Tue Jul 26 13:31:59 2011 +0200
gegl_tile_iterator: simplify again and remove a goto
gegl/buffer/gegl-buffer-access.c | 56 +++++++++++++++----------------------
1 files changed, 23 insertions(+), 33 deletions(-)
---
diff --git a/gegl/buffer/gegl-buffer-access.c b/gegl/buffer/gegl-buffer-access.c
index 6e85276..455e979 100644
--- a/gegl/buffer/gegl-buffer-access.c
+++ b/gegl/buffer/gegl-buffer-access.c
@@ -1139,7 +1139,6 @@ gegl_buffer_sample_cleanup (GeglBuffer *buffer)
}
}
-
typedef struct GeglBufferTileIterator
{
GeglBuffer *buffer;
@@ -1175,16 +1174,14 @@ gegl_buffer_tile_iterator_next (GeglBufferTileIterator *it)
GeglBuffer *buffer = it->buffer;
gint tile_width = buffer->tile_storage->tile_width;
gint tile_height = buffer->tile_storage->tile_height;
- gint buffer_shift_x = buffer->shift_x;
- gint buffer_shift_y = buffer->shift_y;
- gint buffer_x = buffer->extent.x + buffer_shift_x;
- gint buffer_y = buffer->extent.y + buffer_shift_y;
+ gint buffer_x = buffer->extent.x + buffer->shift_x;
+ gint buffer_y = buffer->extent.y + buffer->shift_y;
+ gint tiledx, tiledy;
+ gint offsetx, offsety;
if (it->roi.width == 0 || it->roi.height == 0)
return FALSE;
-gulp:
-
/* unref previously held tile */
if (it->tile)
{
@@ -1192,40 +1189,33 @@ gulp:
it->tile = NULL;
}
- if (it->next_col < it->roi.width)
- { /* return tile on this row */
- gint tiledx = buffer_x + it->next_col;
- gint tiledy = buffer_y + it->next_row;
- gint offsetx = gegl_tile_offset (tiledx, tile_width);
- gint offsety = gegl_tile_offset (tiledy, tile_height);
-
- it->tile = gegl_tile_source_get_tile ((GeglTileSource *) (buffer),
- gegl_tile_indice (tiledx, tile_width),
- gegl_tile_indice (tiledy, tile_height),
- 0);
-
- it->next_col += tile_width - offsetx;
-
- return TRUE;
- }
- else /* move down to next row */
+ /* check if moving to next row is needed */
+ if (it->next_col >= it->roi.width)
{
- gint tiledy;
- gint offsety;
-
tiledy = buffer_y + it->next_row;
offsety = gegl_tile_offset (tiledy, tile_height);
it->next_row += tile_height - offsety;
- it->next_col=0;
+ it->next_col = 0;
- if (it->next_row < it->roi.height)
- {
- goto gulp; /* return the first tile in the next row */
+ if (it->next_row > it->roi.height)
+ { /* iteration ended */
+ return FALSE;
}
- return FALSE;
}
- return FALSE;
+
+ tiledx = buffer_x + it->next_col;
+ tiledy = buffer_y + it->next_row;
+ offsetx = gegl_tile_offset (tiledx, tile_width);
+
+ it->tile = gegl_tile_source_get_tile ((GeglTileSource *) (buffer),
+ gegl_tile_indice (tiledx, tile_width),
+ gegl_tile_indice (tiledy, tile_height),
+ 0);
+
+ it->next_col += tile_width - offsetx;
+
+ return TRUE;
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]