gimp r27607 - in trunk: . app/core



Author: mitch
Date: Mon Nov 10 22:15:40 2008
New Revision: 27607
URL: http://svn.gnome.org/viewvc/gimp?rev=27607&view=rev

Log:
2008-11-10  Michael Natterer  <mitch gimp org>

	* app/core/gimpprojection.[ch]
	* app/core/gimpprojection-construct.c: add code that keeps the
	gegl processor around across calls, but destroy it anyway until
	gegl_processor_set_rectangle() is fixed.



Modified:
   trunk/ChangeLog
   trunk/app/core/gimpprojection-construct.c
   trunk/app/core/gimpprojection.c
   trunk/app/core/gimpprojection.h

Modified: trunk/app/core/gimpprojection-construct.c
==============================================================================
--- trunk/app/core/gimpprojection-construct.c	(original)
+++ trunk/app/core/gimpprojection-construct.c	Mon Nov 10 22:15:40 2008
@@ -144,7 +144,6 @@
                                 gint            h)
 {
   GeglNode      *sink;
-  GeglProcessor *processor;
   GeglRectangle  rect;
 
   sink = gimp_projection_get_sink_node (proj);
@@ -154,11 +153,18 @@
   rect.width  = w;
   rect.height = h;
 
-  processor = gegl_node_new_processor (sink, &rect);
-
-  while (gegl_processor_work (processor, NULL));
-
-  g_object_unref (processor);
+  if (! proj->processor)
+    proj->processor = gegl_node_new_processor (sink, &rect);
+  else
+    gegl_processor_set_rectangle (proj->processor, &rect);
+
+  while (gegl_processor_work (proj->processor, NULL));
+
+#ifdef __GNUC__
+#warning FIXME: keep the processor around once gegl_processor_set_rectangle() works
+#endif
+  g_object_unref (proj->processor);
+  proj->processor = NULL;
 }
 
 static void

Modified: trunk/app/core/gimpprojection.c
==============================================================================
--- trunk/app/core/gimpprojection.c	(original)
+++ trunk/app/core/gimpprojection.c	Mon Nov 10 22:15:40 2008
@@ -203,6 +203,12 @@
       proj->sink_node = NULL;
     }
 
+  if (proj->processor)
+    {
+      g_object_unref (proj->processor);
+      proj->processor = NULL;
+    }
+
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
 

Modified: trunk/app/core/gimpprojection.h
==============================================================================
--- trunk/app/core/gimpprojection.h	(original)
+++ trunk/app/core/gimpprojection.h	Mon Nov 10 22:15:40 2008
@@ -58,6 +58,7 @@
   TilePyramid              *pyramid;
   GeglNode                 *graph;
   GeglNode                 *sink_node;
+  GeglProcessor            *processor;
 
   GSList                   *update_areas;
   GimpProjectionIdleRender  idle_render;



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