[gimp] Only call gimp_channel_combine_span() if the value actually changed



commit 4e124c983b2f2f54e0b583d497750067ea2a5771
Author: Sven Neumann <sven gimp org>
Date:   Sun Oct 11 13:49:14 2009 +0200

    Only call gimp_channel_combine_span() if the value actually changed

 app/core/gimpchannel-combine.c |   26 ++++++++++++++++----------
 1 files changed, 16 insertions(+), 10 deletions(-)
---
diff --git a/app/core/gimpchannel-combine.c b/app/core/gimpchannel-combine.c
index a74778b..0219783 100644
--- a/app/core/gimpchannel-combine.c
+++ b/app/core/gimpchannel-combine.c
@@ -131,10 +131,10 @@ gimp_channel_combine_ellipse (GimpChannel    *mask,
 
 static void
 gimp_channel_combine_span (guchar         *data,
-                              GimpChannelOps  op,
-                              gint            x1,
-                              gint            x2,
-                              gint            value)
+                           GimpChannelOps  op,
+                           gint            x1,
+                           gint            x2,
+                           gint            value)
 {
   if (x2 <= x1)
     return;
@@ -304,7 +304,7 @@ gimp_channel_combine_ellipse_rect (GimpChannel    *mask,
                * legs are the X and Y distances.  (WES)
                */
               const gfloat yi       = ABS (py + 0.5 - ellipse_center_y);
-              gint         last_val = 0;
+              gint         last_val = -1;
               gint         x_start  = px;
               gint         cur_x;
 
@@ -357,13 +357,14 @@ gimp_channel_combine_ellipse_rect (GimpChannel    *mask,
                   else
                     val = 0;
 
-                  gimp_channel_combine_span (data, op,
-                                             MAX (x_start - px, 0),
-                                             MIN (cur_x   - px, maskPR.w),
-                                             last_val);
-
                   if (last_val != val)
                     {
+                      if (last_val != -1)
+                        gimp_channel_combine_span (data, op,
+                                                   MAX (x_start - px, 0),
+                                                   MIN (cur_x   - px, maskPR.w),
+                                                   last_val);
+
                       x_start = cur_x;
                       last_val = val;
                     }
@@ -373,6 +374,11 @@ gimp_channel_combine_ellipse_rect (GimpChannel    *mask,
                    */
                   if (cur_x >= x + a && cur_x < x + w - a)
                     {
+                      gimp_channel_combine_span (data, op,
+                                                 MAX (x_start - px, 0),
+                                                 MIN (cur_x   - px, maskPR.w),
+                                                 last_val);
+
                       x_start = cur_x;
                       cur_x = x + w - a;
                       last_val = val = 255;



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