[cogl] spans: only iterate spans within start-end range



commit d92eaac3ec3a1abe5e05aa8bb039d98044b8302b
Author: Robert Bragg <robert linux intel com>
Date:   Tue Oct 11 10:16:54 2011 +0100

    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 <neil linux intel com>

 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 4a3f0a8..bf72274 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 0484a04..8d922ec 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);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]