From: Ville Syrjälä <ville.syrj...@nokia.com>

Rename compScreenUpdate to compChildrenUpdate, and pass a window as
the parameter. This allows an arbitrary subtree to be updated, instead
of having to update all the windows. This will be used to make sure
all the children have been updated when the parent window contents need
to be accessed in IncludeInferios sub-window mode.

Signed-off-by: Ville Syrjälä <ville.syrj...@nokia.com>
---
 composite/compinit.c |   19 ++++++++++++-------
 1 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/composite/compinit.c b/composite/compinit.c
index 159f7c2..8c98a9d 100644
--- a/composite/compinit.c
+++ b/composite/compinit.c
@@ -131,15 +131,20 @@ compChangeWindowAttributes(WindowPtr pWin, unsigned long 
mask)
 }
 
 static void
-compScreenUpdate (ScreenPtr pScreen)
+compChildrenUpdate (WindowPtr pWin)
 {
-    CompScreenPtr   cs = GetCompScreen (pScreen);
+    ScreenPtr pScreen = pWin->drawable.pScreen;
+    CompScreenPtr cs = GetCompScreen (pScreen);
 
     compCheckTree (pScreen);
-    if (cs->damaged)
-    {
-       compWindowUpdate (pScreen->root);
-       cs->damaged = FALSE;
+    if (cs->damaged) {
+       WindowPtr pChild;
+
+       for (pChild = pWin->lastChild; pChild; pChild = pChild->prevSib)
+           compWindowUpdate (pChild);
+
+       if (pWin == pScreen->root)
+           cs->damaged = FALSE;
     }
 }
 
@@ -153,7 +158,7 @@ compBlockHandler (int           i,
     CompScreenPtr   cs = GetCompScreen (pScreen);
 
     pScreen->BlockHandler = cs->BlockHandler;
-    compScreenUpdate (pScreen);
+    compChildrenUpdate (pScreen->root);
     (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask);
     cs->BlockHandler = pScreen->BlockHandler;
     pScreen->BlockHandler = compBlockHandler;
-- 
1.7.2.2

_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to