From d92eaac3ec3a1abe5e05aa8bb039d98044b8302b Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Tue, 11 Oct 2011 10:16:54 +0100 Subject: [PATCH] spans: only iterate spans within start-end range To save users of the api having to manually check if each iterated span intersects the region of interest we now guarantee that any span iterated implicitly intersects the region of interest. Reviewed-by: Neil Roberts --- cogl/cogl-spans.c | 3 +++ cogl/cogl-texture-2d-sliced.c | 22 ---------------------- 2 files changed, 3 insertions(+), 22 deletions(-) diff --git a/cogl/cogl-spans.c b/cogl/cogl-spans.c index 4a3f0a8dc..bf722746d 100644 --- a/cogl/cogl-spans.c +++ b/cogl/cogl-spans.c @@ -107,6 +107,9 @@ _cogl_span_iter_begin (CoglSpanIter *iter, /* Update intersection */ _cogl_span_iter_update (iter); + + while (iter->next_pos <= iter->cover_start) + _cogl_span_iter_next (iter); } void diff --git a/cogl/cogl-texture-2d-sliced.c b/cogl/cogl-texture-2d-sliced.c index 0484a0418..8d922ec6a 100644 --- a/cogl/cogl-texture-2d-sliced.c +++ b/cogl/cogl-texture-2d-sliced.c @@ -146,10 +146,6 @@ _cogl_texture_2d_sliced_foreach_sub_texture_in_region ( float slice_ty1; float slice_ty2; - /* Discard slices out of rectangle early */ - if (!iter_y.intersects) - continue; - if (iter_y.flipped) { y_intersect_start = iter_y.intersect_end; @@ -181,10 +177,6 @@ _cogl_texture_2d_sliced_foreach_sub_texture_in_region ( float slice_tx2; CoglTexture2D *slice_tex; - /* Discard slices out of rectangle early */ - if (!iter_x.intersects) - continue; - if (iter_x.flipped) { x_intersect_start = iter_x.intersect_end; @@ -510,13 +502,6 @@ _cogl_texture_2d_sliced_upload_subregion_to_gl (CoglTexture2DSliced *tex_2ds, _cogl_span_iter_next (&y_iter), source_y += inter_h ) { - /* Discard slices out of the subregion early */ - if (!y_iter.intersects) - { - inter_h = 0; - continue; - } - y_span = &g_array_index (tex_2ds->slice_y_spans, CoglSpan, y_iter.index); @@ -535,13 +520,6 @@ _cogl_texture_2d_sliced_upload_subregion_to_gl (CoglTexture2DSliced *tex_2ds, { int slice_num; - /* Discard slices out of the subregion early */ - if (!x_iter.intersects) - { - inter_w = 0; - continue; - } - x_span = &g_array_index (tex_2ds->slice_x_spans, CoglSpan, x_iter.index);