[gimp] Bug 735810 - performance shrinkage of Paths tool



commit 6cf8bda49b02032d2d0c7e7b5f0d219f7e62fd8c
Author: Massimo Valentini <mvalentini src gnome org>
Date:   Sat Sep 5 10:04:33 2015 +0200

    Bug 735810 - performance shrinkage of Paths tool
    
    In gimp_display_shell_expose_region(), invalidate each rect rather
    than rebuilding the cairo_region_t as GdkRegion and then invalidating
    the entire GdkRegion. Improves performance for tools that invalidate
    complex regions.

 app/display/gimpdisplayshell-expose.c |   12 +++++-------
 1 files changed, 5 insertions(+), 7 deletions(-)
---
diff --git a/app/display/gimpdisplayshell-expose.c b/app/display/gimpdisplayshell-expose.c
index 710e876..337e198 100644
--- a/app/display/gimpdisplayshell-expose.c
+++ b/app/display/gimpdisplayshell-expose.c
@@ -42,7 +42,7 @@ void
 gimp_display_shell_expose_region (GimpDisplayShell *shell,
                                   cairo_region_t   *region)
 {
-  GdkRegion *gdk_region;
+  GdkWindow *window;
   gint       n_rectangles;
   gint       i;
 
@@ -52,7 +52,7 @@ gimp_display_shell_expose_region (GimpDisplayShell *shell,
   if (! gtk_widget_get_realized (shell->canvas))
     return;
 
-  gdk_region = gdk_region_new ();
+  window = gtk_widget_get_window (shell->canvas);
   n_rectangles = cairo_region_num_rectangles (region);
 
   for (i = 0; i < n_rectangles; i++)
@@ -61,12 +61,10 @@ gimp_display_shell_expose_region (GimpDisplayShell *shell,
 
       cairo_region_get_rectangle (region, i, &rectangle);
 
-      gdk_region_union_with_rect (gdk_region, (GdkRectangle *) &rectangle);
+      gdk_window_invalidate_rect (window,
+                                  (GdkRectangle *) &rectangle,
+                                  TRUE);
     }
-
-  gdk_window_invalidate_region (gtk_widget_get_window (shell->canvas),
-                                gdk_region, TRUE);
-  gdk_region_destroy (gdk_region);
 }
 
 void


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