summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Burgmeier <[email protected]>2017-11-08 16:14:11 +0100
committerraveit65 <[email protected]>2017-11-10 20:13:10 +0100
commit6cf1369769b94165c3360945deb47621e957c603 (patch)
tree2ede3208735d627052a4e6a8deac5e02559247f5
parent99e0041e07bb3efe3f4253d995a58e7f214df35f (diff)
downloadmarco-6cf1369769b94165c3360945deb47621e957c603.tar.bz2
marco-6cf1369769b94165c3360945deb47621e957c603.tar.xz
XFIXES regions are leaked during paint_windows if more than one
META_COMP_WINDOW_DESKTOP is available (#329)
-rw-r--r--src/compositor/compositor-xrender.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/compositor/compositor-xrender.c b/src/compositor/compositor-xrender.c
index 75171cbc..8b0c43e5 100644
--- a/src/compositor/compositor-xrender.c
+++ b/src/compositor/compositor-xrender.c
@@ -1321,8 +1321,15 @@ paint_windows (MetaScreen *screen,
if (cw->type == META_COMP_WINDOW_DESKTOP)
{
- desktop_region = XFixesCreateRegion (xdisplay, 0, 0);
- XFixesCopyRegion (xdisplay, desktop_region, paint_region);
+ if(desktop_region)
+ {
+ XFixesUnionRegion (xdisplay, desktop_region, desktop_region, paint_region);
+ }
+ else
+ {
+ desktop_region = XFixesCreateRegion (xdisplay, 0, 0);
+ XFixesCopyRegion (xdisplay, desktop_region, paint_region);
+ }
}
XFixesSubtractRegion (xdisplay, paint_region,