summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2014-06-21 13:40:00 -0400
committerJasper St. Pierre <jstpierre@mecheye.net>2014-06-21 13:50:44 -0400
commitff8d5281f06f0d41c083d203f5797c3009fb1010 (patch)
treea2f6c8d7a9b769d3f3c56f3cb9da8f674acc2576
parent4f9b994e736b967b0f7059ae7dcffd76774a7a28 (diff)
downloadmutter-ff8d5281f06f0d41c083d203f5797c3009fb1010.tar.gz
frames: Simplify the clip region calculation
Since GTK+ already clips to the extended region for us, there's no need to combine the two. This does lose the fast-path, but I don't actually expect this to fire, as when we're composited, we really won't ever get partial exposes.
-rw-r--r--src/ui/frames.c20
1 files changed, 4 insertions, 16 deletions
diff --git a/src/ui/frames.c b/src/ui/frames.c
index 65c94b905..3339b1e3f 100644
--- a/src/ui/frames.c
+++ b/src/ui/frames.c
@@ -1580,9 +1580,8 @@ meta_frames_destroy_event (GtkWidget *widget,
}
-static void
-clip_region_to_visible_frame_border (cairo_region_t *region,
- MetaUIFrame *frame)
+static cairo_region_t *
+get_visible_frame_border_region (MetaUIFrame *frame)
{
MetaRectangle frame_rect;
cairo_rectangle_int_t area;
@@ -1620,9 +1619,7 @@ clip_region_to_visible_frame_border (cairo_region_t *region,
/* Visible frame border */
cairo_region_subtract_rectangle (frame_border, &area);
- cairo_region_intersect (region, frame_border);
-
- cairo_region_destroy (frame_border);
+ return frame_border;
}
#define TAU (2*M_PI)
@@ -1744,28 +1741,19 @@ meta_frames_draw (GtkWidget *widget,
{
MetaUIFrame *frame;
MetaFrames *frames;
- cairo_rectangle_int_t clip;
cairo_region_t *region;
frames = META_FRAMES (widget);
- gdk_cairo_get_clip_rectangle (cr, &clip);
frame = find_frame_to_draw (frames, cr);
if (frame == NULL)
return FALSE;
- region = cairo_region_create_rectangle (&clip);
- clip_region_to_visible_frame_border (region, frame);
-
- if (cairo_region_is_empty (region))
- goto out;
-
+ region = get_visible_frame_border_region (frame);
gdk_cairo_region (cr, region);
cairo_clip (cr);
meta_frames_paint (frames, frame, cr);
-
- out:
cairo_region_destroy (region);
return TRUE;