[gegl] buffer: remove some conditionals in gegl_buffer_get



commit e937b3007d9096324d86a3aeb73a2be8f2841159
Author: Øyvind Kolås <pippin gimp org>
Date:   Thu Oct 15 00:13:16 2015 +0200

    buffer: remove some conditionals in gegl_buffer_get

 gegl/buffer/gegl-buffer-access.c |   19 ++++++++++---------
 1 files changed, 10 insertions(+), 9 deletions(-)
---
diff --git a/gegl/buffer/gegl-buffer-access.c b/gegl/buffer/gegl-buffer-access.c
index a661e39..eb964f5 100644
--- a/gegl/buffer/gegl-buffer-access.c
+++ b/gegl/buffer/gegl-buffer-access.c
@@ -1429,7 +1429,6 @@ _gegl_buffer_get_unlocked (GeglBuffer          *buffer,
       gint          y1 = floorf (rect->y / scale + GEGL_SCALE_EPSILON);
       gint          y2 = ceil ((rect->y + rect->height) / scale - GEGL_SCALE_EPSILON);
       gint          factor = 1;
-      gint          stride;
       gint          offset = 0;
 
       while (scale <= 0.5)
@@ -1459,17 +1458,19 @@ _gegl_buffer_get_unlocked (GeglBuffer          *buffer,
       sample_rect.width  = factor * (x2 - x1);
       sample_rect.height = factor * (y2 - y1);
 
-      sample_buf = scale == 1.0 ? dest_buf : g_malloc0 (buf_height * buf_width * bpp);
-      stride     = scale == 1.0 ? rowstride : buf_width * bpp;
-
-      gegl_buffer_iterate_read_dispatch (buffer, &sample_rect, (guchar*)sample_buf + offset, stride,
-                                         format, level, repeat_mode);
+      if (rowstride == GEGL_AUTO_ROWSTRIDE)
+        rowstride = rect->width * bpp;
 
       if (scale == 1.0)
-        return;
+        {
+          gegl_buffer_iterate_read_dispatch (buffer, &sample_rect, (guchar*)dest_buf + offset, rowstride,
+                                         format, level, repeat_mode);
+          return;
+        }
 
-      if (rowstride == GEGL_AUTO_ROWSTRIDE)
-        rowstride = rect->width * bpp;
+      sample_buf = g_malloc0 (buf_height * buf_width * bpp);
+      gegl_buffer_iterate_read_dispatch (buffer, &sample_rect, (guchar*)sample_buf + offset, buf_width * bpp,
+                                         format, level, repeat_mode);
 
       if (scale <= 1.99)
         {


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