[gtk+/wip/chergert/quartz-frame-clock: 219/228] quartz: micro optimization in rectangle and likely paths



commit c21250b80e0822b3e9554d72028abb585fc86be2
Author: Christian Hergert <christian hergert me>
Date:   Fri Sep 11 15:03:13 2015 -0700

    quartz: micro optimization in rectangle and likely paths
    
    Not much of an improvement, but easy cleanup

 gdk/quartz/GdkQuartzView.c |   34 +++++++++++++++++++++++-----------
 1 files changed, 23 insertions(+), 11 deletions(-)
---
diff --git a/gdk/quartz/GdkQuartzView.c b/gdk/quartz/GdkQuartzView.c
index cbd7fe5..8182d31 100644
--- a/gdk/quartz/GdkQuartzView.c
+++ b/gdk/quartz/GdkQuartzView.c
@@ -588,16 +588,16 @@
   int i;
   cairo_region_t *region;
 
-  if (GDK_WINDOW_DESTROYED (gdk_window))
+  if (G_UNLIKELY (GDK_WINDOW_DESTROYED (gdk_window)))
     return;
 
-  if (! (gdk_window->event_mask & GDK_EXPOSURE_MASK))
+  if (G_UNLIKELY (!(gdk_window->event_mask & GDK_EXPOSURE_MASK)))
     return;
 
-  if (NSEqualRects (rect, NSZeroRect))
+  if (G_UNLIKELY (NSEqualRects (rect, NSZeroRect)))
     return;
 
-  if (!GDK_WINDOW_IS_MAPPED (gdk_window))
+  if (G_UNLIKELY (!GDK_WINDOW_IS_MAPPED (gdk_window)))
     {
       /* If the window is not yet mapped, clip_region_with_children
        * will be empty causing the usual code below to draw nothing.
@@ -624,16 +624,28 @@
     }
 
   [self getRectsBeingDrawn: &drawn_rects count: &count];
-  region = cairo_region_create ();
 
-  for (i = 0; i < count; i++)
+  if (G_LIKELY (count == 1))
     {
-      gdk_rect.x = drawn_rects[i].origin.x;
-      gdk_rect.y = drawn_rects[i].origin.y;
-      gdk_rect.width = drawn_rects[i].size.width;
-      gdk_rect.height = drawn_rects[i].size.height;
+      gdk_rect.x = drawn_rects [0].origin.x;
+      gdk_rect.y = drawn_rects [0].origin.y;
+      gdk_rect.width = drawn_rects [0].size.width;
+      gdk_rect.height = drawn_rects [0].size.height;
+      region = cairo_region_create_rectangle (&gdk_rect);
+    }
+  else
+    {
+      region = cairo_region_create ();
+
+      for (i = 0; i < count; i++)
+        {
+          gdk_rect.x = drawn_rects[i].origin.x;
+          gdk_rect.y = drawn_rects[i].origin.y;
+          gdk_rect.width = drawn_rects[i].size.width;
+          gdk_rect.height = drawn_rects[i].size.height;
 
-      cairo_region_union_rectangle (region, &gdk_rect);
+          cairo_region_union_rectangle (region, &gdk_rect);
+        }
     }
 
   impl->in_paint_rect_count++;


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