diff options
-rw-r--r-- | composite/compalloc.c | 2 | ||||
-rw-r--r-- | include/windowstr.h | 1 | ||||
-rw-r--r-- | mi/miexpose.c | 4 |
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; |