summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--composite/compalloc.c2
-rw-r--r--include/windowstr.h1
-rw-r--r--mi/miexpose.c4
3 files changed, 7 insertions, 0 deletions
diff --git a/composite/compalloc.c b/composite/compalloc.c
index 841b2dc11..f00bf4eb0 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 4a7a0f488..222de31dc 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 94258b864..0f1ebe59c 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;