raveit 6472905
Author: Travis Watkins <amaranth@ubuntu.com>
raveit 6472905
Description: Always unredirect mate-screensaver when using nvidia
raveit 6472905
 Workaround for LP #160264 while still disabling unredirect fullscreen
raveit 6472905
 windows for nvidia users
raveit 6472905
Origin: vendor, ubuntu (1:0.8.3+git20090917-0ubuntu4)
raveit 6472905
Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/160264
raveit 6472905
--- a/src/paint.c
raveit 6472905
+++ b/src/paint.c
raveit 6472905
@@ -262,6 +262,7 @@ paintOutputRegion (CompScreen	       *sc
raveit 6472905
     CompTransform vTransform;
raveit 6472905
     int           offX, offY;
raveit 6472905
     Region        clip = region;
raveit 6472905
+    int           dontcare;
raveit 6472905
 
raveit 6472905
     if (!tmpRegion)
raveit 6472905
     {
raveit 6472905
@@ -341,8 +342,14 @@ paintOutputRegion (CompScreen	       *sc
raveit 6472905
 		    XSubtractRegion (tmpRegion, w->region, tmpRegion);
raveit 6472905
 
raveit 6472905
 		/* unredirect top most fullscreen windows. */
raveit 6472905
+		/* if the fullscreen window is mate-screensaver and we're
raveit 6472905
+		   on nvidia we want to always unredirect even if this
raveit 6472905
+		   option is disabled to work around LP #160264 */
raveit 6472905
 		if (count == 0 &&
raveit 6472905
-		    screen->opt[COMP_SCREEN_OPTION_UNREDIRECT_FS].value.b)
raveit 6472905
+		    (screen->opt[COMP_SCREEN_OPTION_UNREDIRECT_FS].value.b ||
raveit 6472905
+		    (w->resName && !strcmp(w->resName, "mate-screensaver") &&
raveit 6472905
+		    XQueryExtension (screen->display->display, "NV-GLX",
raveit 6472905
+				     &dontcare, &dontcare, &dontcare))))
raveit 6472905
 		{
raveit 6472905
 		    if (XEqualRegion (w->region, &screen->region) &&
raveit 6472905
 			!REGION_NOT_EMPTY (tmpRegion))