summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>2016-04-15 23:01:56 +0300
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2016-04-15 23:54:34 +0300
commitf62f214f3b1ddd4c5cebb07003b4eaa2f7d13d9f (patch)
tree8d117829799594f718ac836fe37766f7a7cbee16
parent38f7e082cc9cf5ef5b56948e4b39457299a7aef0 (diff)
downloadmetacity-f62f214f3b1ddd4c5cebb07003b4eaa2f7d13d9f.tar.gz
compositor: rename window_size to visible_region
-rw-r--r--src/compositor/compositor-xrender.c92
1 files changed, 52 insertions, 40 deletions
diff --git a/src/compositor/compositor-xrender.c b/src/compositor/compositor-xrender.c
index 923f63df..8bee1370 100644
--- a/src/compositor/compositor-xrender.c
+++ b/src/compositor/compositor-xrender.c
@@ -174,9 +174,9 @@ typedef struct _MetaCompWindow
Picture shadow_pict;
XserverRegion window_region;
+ XserverRegion visible_region;
XserverRegion client_region;
- XserverRegion window_size;
XserverRegion extents;
Picture shadow;
@@ -1192,38 +1192,50 @@ get_client_region (MetaCompWindow *cw)
}
static XserverRegion
-window_size (MetaCompWindow *cw)
+get_visible_region (MetaCompWindow *cw)
{
- MetaScreen *screen = cw->screen;
- MetaDisplay *display = meta_screen_get_display (screen);
- Display *xdisplay = meta_display_get_xdisplay (display);
- cairo_region_t *visible_region;
- XserverRegion visible = None;
- XserverRegion border;
+ MetaDisplay *display;
+ Display *xdisplay;
+ XserverRegion region;
- if (cw->window)
- {
- visible_region = meta_window_get_frame_bounds (cw->window);
+ display = meta_screen_get_display (cw->screen);
+ xdisplay = meta_display_get_xdisplay (display);
- if (visible_region)
- visible = cairo_region_to_xserver_region (xdisplay, visible_region);
+ if (cw->window_region != None)
+ {
+ region = XFixesCreateRegion (xdisplay, NULL, 0);
+ XFixesCopyRegion (xdisplay, region, cw->window_region);
+ }
+ else
+ {
+ region = get_window_region (cw);
+ if (region == None)
+ return None;
}
- border = get_window_region (cw);
-
- if (visible != None)
+ if (cw->window)
{
- XFixesTranslateRegion (xdisplay, visible,
- cw->attrs.x + cw->attrs.border_width,
- cw->attrs.y + cw->attrs.border_width);
+ cairo_region_t *visible;
+ XserverRegion tmp;
+
+ visible = meta_window_get_frame_bounds (cw->window);
+ tmp = visible ? cairo_region_to_xserver_region (xdisplay, visible) : None;
- XFixesIntersectRegion (xdisplay, visible, visible, border);
- XFixesDestroyRegion (xdisplay, border);
+ if (tmp != None)
+ {
+ int x;
+ int y;
+
+ x = cw->attrs.x + cw->attrs.border_width;
+ y = cw->attrs.y + cw->attrs.border_width;
- return visible;
+ XFixesTranslateRegion (xdisplay, tmp, x, y);
+ XFixesIntersectRegion (xdisplay, region, region, tmp);
+ XFixesDestroyRegion (xdisplay, tmp);
+ }
}
- return border;
+ return region;
}
static XRenderPictFormat *
@@ -1401,16 +1413,16 @@ paint_windows (MetaScreen *screen,
cw->window_region = None;
}
- if (cw->client_region)
+ if (cw->visible_region)
{
- XFixesDestroyRegion (xdisplay, cw->client_region);
- cw->client_region = None;
+ XFixesDestroyRegion (xdisplay, cw->visible_region);
+ cw->visible_region = None;
}
- if (cw->window_size)
+ if (cw->client_region)
{
- XFixesDestroyRegion (xdisplay, cw->window_size);
- cw->window_size = None;
+ XFixesDestroyRegion (xdisplay, cw->client_region);
+ cw->client_region = None;
}
#if 0
@@ -1425,12 +1437,12 @@ paint_windows (MetaScreen *screen,
if (cw->window_region == None)
cw->window_region = get_window_region (cw);
+ if (cw->visible_region == None)
+ cw->visible_region = get_visible_region (cw);
+
if (cw->client_region == None)
cw->client_region = get_client_region (cw);
- if (cw->window_size == None)
- cw->window_size = window_size (cw);
-
if (cw->extents == None)
cw->extents = win_extents (cw);
@@ -1489,7 +1501,7 @@ paint_windows (MetaScreen *screen,
shadow_clip = XFixesCreateRegion (xdisplay, NULL, 0);
XFixesSubtractRegion (xdisplay, shadow_clip, cw->border_clip,
- cw->window_size);
+ cw->visible_region);
XFixesSetPictureClipRegion (xdisplay, root_buffer, 0, 0,
shadow_clip);
@@ -1776,16 +1788,16 @@ free_win (MetaCompWindow *cw,
cw->window_region = None;
}
- if (cw->client_region)
+ if (cw->visible_region)
{
- XFixesDestroyRegion (xdisplay, cw->client_region);
- cw->client_region = None;
+ XFixesDestroyRegion (xdisplay, cw->visible_region);
+ cw->visible_region = None;
}
- if (cw->window_size)
+ if (cw->client_region)
{
- XFixesDestroyRegion (xdisplay, cw->window_size);
- cw->window_size = None;
+ XFixesDestroyRegion (xdisplay, cw->client_region);
+ cw->client_region = None;
}
if (cw->border_clip)
@@ -2057,9 +2069,9 @@ add_win (MetaScreen *screen,
cw->shadow_pict = None;
cw->window_region = None;
+ cw->visible_region = None;
cw->client_region = None;
- cw->window_size = None;
cw->extents = None;
cw->shadow = None;
cw->shadow_dx = 0;