summaryrefslogtreecommitdiff
path: root/composite/compalloc.c
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@nokia.com>2011-04-13 21:46:20 +0300
committerVille Syrjälä <ville.syrjala@nokia.com>2011-05-04 19:01:01 +0300
commiteac37f32b85b631d94ee3ba11fa65b9d2cb72c38 (patch)
tree9f2273c7b9e2108cbaa287b3794d7c21bd7dcdcf /composite/compalloc.c
parentf2001b0f6dffa0a8f05def4a86ea37c4c91db724 (diff)
composite: Recompute clipping when changing between manual and automatic redirection
Call compMarkWindows() when changing between manual and automatic redirection modes. Otherwise the window clipping won't be recomputed correctly. Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com>
Diffstat (limited to 'composite/compalloc.c')
-rw-r--r--composite/compalloc.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/composite/compalloc.c b/composite/compalloc.c
index 37d2245d4..5c27631e1 100644
--- a/composite/compalloc.c
+++ b/composite/compalloc.c
@@ -226,6 +226,10 @@ compRedirectWindow (ClientPtr pClient, WindowPtr pWin, int update)
}
cw->update = CompositeRedirectManual;
}
+ else if (cw->update == CompositeRedirectAutomatic && !cw->damageRegistered) {
+ if (!anyMarked)
+ anyMarked = compMarkWindows (pWin, &pLayerWin);
+ }
if (!compCheckRedirect (pWin))
{
@@ -314,6 +318,8 @@ compFreeClientWindow (WindowPtr pWin, XID id)
else if (cw->update == CompositeRedirectAutomatic &&
!cw->damageRegistered && pWin->redirectDraw != RedirectDrawNone)
{
+ anyMarked = compMarkWindows (pWin, &pLayerWin);
+
DamageRegister (&pWin->drawable, cw->damage);
cw->damageRegistered = TRUE;
pWin->redirectDraw = RedirectDrawAutomatic;