[gimp/gimp-2-10] configure.ac, app: temporarily revert GEGL dependency to 0.4.22 for release



commit 6bed57abe248c59acf886654d1ebd1ccb09e840d
Author: Ell <ell_se yahoo com>
Date:   Sat Feb 22 22:23:12 2020 +0200

    configure.ac, app: temporarily revert GEGL dependency to 0.4.22 for release
    
    ... and work around the missing gegl_buffer_share_storage() API in
    gimp:replace.

 app/operations/layer-modes/gimpoperationreplace.c | 63 +++++++++++++----------
 app/sanity.c                                      |  2 +-
 configure.ac                                      |  2 +-
 3 files changed, 38 insertions(+), 29 deletions(-)
---
diff --git a/app/operations/layer-modes/gimpoperationreplace.c 
b/app/operations/layer-modes/gimpoperationreplace.c
index ed1ac19249..dd19e2ebb3 100644
--- a/app/operations/layer-modes/gimpoperationreplace.c
+++ b/app/operations/layer-modes/gimpoperationreplace.c
@@ -23,6 +23,7 @@
 #include <string.h>
 
 #include <gegl-plugin.h>
+#include <gegl-buffer-backend.h>
 
 #include "../operations-types.h"
 
@@ -178,38 +179,46 @@ gimp_operation_replace_parent_process (GeglOperation        *op,
       input = gegl_operation_context_get_object (context, "input");
       aux   = gegl_operation_context_get_object (context, "aux");
 
-      if (input && aux &&
-          gegl_buffer_share_storage (GEGL_BUFFER (input), GEGL_BUFFER (aux)))
+      if (input && aux)
         {
-          gint input_shift_x;
-          gint input_shift_y;
-          gint aux_shift_x;
-          gint aux_shift_y;
-
-          g_object_get (input,
-                        "shift-x", &input_shift_x,
-                        "shift-y", &input_shift_y,
-                        NULL);
-          g_object_get (aux,
-                        "shift-x", &aux_shift_x,
-                        "shift-y", &aux_shift_y,
-                        NULL);
-
-          if (input_shift_x == aux_shift_x && input_shift_y == aux_shift_y)
-            {
-              const GeglRectangle *input_abyss;
-              const GeglRectangle *aux_abyss;
+          GObject *buffer = aux;
 
-              input_abyss = gegl_buffer_get_abyss (GEGL_BUFFER (input));
-              aux_abyss   = gegl_buffer_get_abyss (GEGL_BUFFER (aux));
+          while (buffer != input && GEGL_IS_BUFFER (buffer))
+            buffer = (GObject *) gegl_tile_handler_get_source (buffer);
 
-              if (gegl_rectangle_equal (input_abyss, aux_abyss)  ||
-                  (gegl_rectangle_contains (input_abyss, result) &&
-                   gegl_rectangle_contains (aux_abyss,   result)))
+          if (buffer == input)
+            {
+              gint input_shift_x;
+              gint input_shift_y;
+              gint aux_shift_x;
+              gint aux_shift_y;
+
+              g_object_get (input,
+                            "shift-x", &input_shift_x,
+                            "shift-y", &input_shift_y,
+                            NULL);
+              g_object_get (aux,
+                            "shift-x", &aux_shift_x,
+                            "shift-y", &aux_shift_y,
+                            NULL);
+
+              if (input_shift_x == aux_shift_x && input_shift_y == aux_shift_y)
                 {
-                  gegl_operation_context_set_object (context, "output", input);
+                  const GeglRectangle *input_abyss;
+                  const GeglRectangle *aux_abyss;
+
+                  input_abyss = gegl_buffer_get_abyss (GEGL_BUFFER (input));
+                  aux_abyss   = gegl_buffer_get_abyss (GEGL_BUFFER (aux));
+
+                  if (gegl_rectangle_equal (input_abyss, aux_abyss)  ||
+                      (gegl_rectangle_contains (input_abyss, result) &&
+                       gegl_rectangle_contains (aux_abyss,   result)))
+                    {
+                      gegl_operation_context_set_object (context,
+                                                         "output", input);
 
-                  return TRUE;
+                      return TRUE;
+                    }
                 }
             }
         }
diff --git a/app/sanity.c b/app/sanity.c
index 5241b8783a..5a2447c749 100644
--- a/app/sanity.c
+++ b/app/sanity.c
@@ -518,7 +518,7 @@ sanity_check_gegl (void)
 
 #define GEGL_REQUIRED_MAJOR 0
 #define GEGL_REQUIRED_MINOR 4
-#define GEGL_REQUIRED_MICRO 23
+#define GEGL_REQUIRED_MICRO 22
 
   gegl_get_version (&gegl_major_version,
                     &gegl_minor_version,
diff --git a/configure.ac b/configure.ac
index c9b4287238..06082ee3b4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -52,7 +52,7 @@ m4_define([fontconfig_required_version], [2.12.4])
 m4_define([freetype2_required_version], [2.1.7])
 m4_define([gdk_pixbuf_required_version], [2.30.8])
 m4_define([gegl_major_minor_version], [0.4])
-m4_define([gegl_micro_version], [23])
+m4_define([gegl_micro_version], [22])
 m4_define([gegl_required_version],
           [gegl_major_minor_version.gegl_micro_version])
 m4_define([gexiv2_required_version], [0.10.6])


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