xserver: Branch 'master'

Keith Packard keithp at kemper.freedesktop.org
Wed Aug 3 20:48:25 PDT 2011


 composite/compalloc.c |    2 ++
 include/windowstr.h   |    1 +
 mi/miexpose.c         |    4 ++++
 3 files changed, 7 insertions(+)

New commits:
commit 9504caf1c3243e3ab2eb7126bc2bb876a8f89918
Author: Ville Syrjälä <ville.syrjala at nokia.com>
Date:   Fri May 6 18:19:34 2011 +0300

    composite: Inhibit window background paint with manual subwindow redirection
    
    The composite extension spec says that window background painting
    should be inhibited when the subwindow redirection mode is set to
    manual.
    
    This eliminates the ugly flashing effect when compiz unredirects a
    fullscreen window.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala at nokia.com>
    Reviewed-by: Owen Taylor <otaylor at fishsoup.net>
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/composite/compalloc.c b/composite/compalloc.c
index 841b2dc..f00bf4e 100644
--- a/composite/compalloc.c
+++ b/composite/compalloc.c
@@ -434,6 +434,7 @@ compRedirectSubwindows (ClientPtr pClient, WindowPtr pWin, int update)
 	 * critical output
 	 */
 	DamageExtSetCritical (pClient, TRUE);
+	pWin->inhibitBGPaint = TRUE;
     }
     return Success;
 }
@@ -466,6 +467,7 @@ compFreeClientSubwindows (WindowPtr pWin, XID id)
 		 */
 		DamageExtSetCritical (pClient, FALSE);
 		csw->update = CompositeRedirectAutomatic;
+		pWin->inhibitBGPaint = FALSE;
 		if (pWin->mapped)
 		    (*pWin->drawable.pScreen->ClearToBackground)(pWin, 0, 0, 0, 0, TRUE);
 	    }
diff --git a/include/windowstr.h b/include/windowstr.h
index 4a7a0f4..222de31 100644
--- a/include/windowstr.h
+++ b/include/windowstr.h
@@ -169,6 +169,7 @@ typedef struct _Window {
 #endif
 #ifdef COMPOSITE
     unsigned		damagedDescendants:1;	/* some descendants are damaged */
+    unsigned		inhibitBGPaint:1;	/* paint the background? */
 #endif
 } WindowRec;
 
diff --git a/mi/miexpose.c b/mi/miexpose.c
index 94258b8..0f1ebe5 100644
--- a/mi/miexpose.c
+++ b/mi/miexpose.c
@@ -575,6 +575,10 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
 	tile_x_off = pWin->drawable.x - draw_x_off;
 	tile_y_off = pWin->drawable.y - draw_y_off;
 	fill = pWin->background;
+#ifdef COMPOSITE
+	if (pWin->inhibitBGPaint)
+	    return;
+#endif
 	switch (pWin->backgroundState) {
 	case None:
 	    return;


More information about the xorg-commit mailing list