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