[gtk+/wip/chergert/quartz-frame-clock: 219/228] quartz: micro optimization in rectangle and likely paths
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/chergert/quartz-frame-clock: 219/228] quartz: micro optimization in rectangle and likely paths
- Date: Fri, 25 Sep 2015 09:43:52 +0000 (UTC)
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]