aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordolio <dolio>2004-09-29 18:33:42 +0000
committerdolio <dolio>2004-09-29 18:33:42 +0000
commit2427e4ea664ed5b0b16575ef1cdeb209afd941d0 (patch)
tree36a4c80fa2ed5dceee8f2eb0583de8e5874fa2dc
parentbump version number (diff)
downloadxcman-2427e4ea664ed5b0b16575ef1cdeb209afd941d0.tar.gz
xcman-2427e4ea664ed5b0b16575ef1cdeb209afd941d0.tar.bz2
xcman-2427e4ea664ed5b0b16575ef1cdeb209afd941d0.tar.xz
Modified paint_all so that it doesn't draw off-screen windows, and doesn't
draw shadows on desktop 'root' windows.
-rw-r--r--ChangeLog7
-rw-r--r--xcompmgr.c10
2 files changed, 16 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index d04f4f8..cd9c99a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2004-09-29 Dan Doel <dolio@case.edu>
+
+ * xcompmgr.c: (paint_all):
+ Added some small optimizations by Thomas Luebking. paint_all
+ now avoids drawing windows that don't appear on the screen,
+ and doesn't bother drawing shadows on desktop windows.
+
2004-09-23 Dan Doel <dolio@case.edu>
* xcompmgr.1:
diff --git a/xcompmgr.c b/xcompmgr.c
index 8eaa0a2..c39b7b1 100644
--- a/xcompmgr.c
+++ b/xcompmgr.c
@@ -942,6 +942,10 @@ paint_all (Display *dpy, XserverRegion region)
/* never painted, ignore it */
if (!w->damaged)
continue;
+ /* if invisible, ignore it */
+ if (w->a.x + w->a.width < 1 || w->a.y + w->a.height < 1
+ || w->a.x >= root_width || w->a.y >= root_height)
+ continue;
if (!w->picture)
{
XRenderPictureAttributes pa;
@@ -1030,6 +1034,9 @@ paint_all (Display *dpy, XserverRegion region)
case CompSimple:
break;
case CompServerShadows:
+ /* dont' bother drawing shadows on desktop windows */
+ if (w->windowType == winDesktopAtom)
+ break;
set_ignore (dpy, NextRequest (dpy));
if (w->opacity != OPAQUE && !w->shadowPict)
w->shadowPict = solid_picture (dpy, True,
@@ -1044,7 +1051,8 @@ paint_all (Display *dpy, XserverRegion region)
w->shadow_width, w->shadow_height);
break;
case CompClientShadows:
- if (w->shadow)
+ /* don't bother drawing shadows on desktop windows */
+ if (w->shadow && w->windowType != winDesktopAtom)
{
XRenderComposite (dpy, PictOpOver, blackPicture, w->shadow, rootBuffer,
0, 0, 0, 0,