[PATCH] composite: Convert compWindowUpdate to use TraverseTree

Adam Jackson ajax at redhat.com
Wed Sep 8 11:04:40 PDT 2010


Signed-off-by: Adam Jackson <ajax at redhat.com>
---
 composite/compwindow.c |   36 +++++++++++++++++-------------------
 1 files changed, 17 insertions(+), 19 deletions(-)

diff --git a/composite/compwindow.c b/composite/compwindow.c
index 160b764..df06c88 100644
--- a/composite/compwindow.c
+++ b/composite/compwindow.c
@@ -639,10 +639,9 @@ compWindowFormat (WindowPtr pWin)
 }
 
 static void
-compWindowUpdateAutomatic (WindowPtr pWin)
+compWindowUpdateAutomatic (WindowPtr pWin, ScreenPtr pScreen)
 {
     CompWindowPtr   cw = GetCompWindow (pWin);
-    ScreenPtr	    pScreen = pWin->drawable.pScreen;
     WindowPtr	    pParent = pWin->parent;
     PixmapPtr	    pSrcPixmap = (*pScreen->GetWindowPixmap) (pWin);
     PictFormatPtr   pSrcFormat = compWindowFormat (pWin);
@@ -665,8 +664,7 @@ compWindowUpdateAutomatic (WindowPtr pWin)
     /*
      * First move the region from window to screen coordinates
      */
-    RegionTranslate(pRegion,
-		      pWin->drawable.x, pWin->drawable.y);
+    RegionTranslate(pRegion, pWin->drawable.x, pWin->drawable.y);
 
     /*
      * Clip against the "real" border clip
@@ -676,8 +674,7 @@ compWindowUpdateAutomatic (WindowPtr pWin)
     /*
      * Now translate from screen to dest coordinates
      */
-    RegionTranslate(pRegion,
-		      -pParent->drawable.x, -pParent->drawable.y);
+    RegionTranslate(pRegion, -pParent->drawable.x, -pParent->drawable.y);
 
     /*
      * Clip the picture
@@ -706,23 +703,24 @@ compWindowUpdateAutomatic (WindowPtr pWin)
     DamageEmpty (cw->damage);
 }
 
-void
-compWindowUpdate (WindowPtr pWin)
+static int
+compWindowUpdateVisit(WindowPtr pWin, void *data)
 {
-    WindowPtr	pChild;
-
-    for (pChild = pWin->lastChild; pChild; pChild = pChild->prevSib)
-	compWindowUpdate (pChild);
-    if (pWin->redirectDraw != RedirectDrawNone)
+    if (pWin->redirectDraw == RedirectDrawAutomatic)
     {
-	CompWindowPtr	cw = GetCompWindow(pWin);
-
+	CompWindowPtr cw = GetCompWindow(pWin);
 	if (cw->damaged)
-	{
-	    compWindowUpdateAutomatic (pWin);
-	    cw->damaged = FALSE;
-	}
+	    compWindowUpdateAutomatic(pWin, data);
+	cw->damaged = FALSE;
     }
+
+    return WT_WALKCHILDREN;
+}
+
+void
+compWindowUpdate (WindowPtr pWin)
+{
+    TraverseTree(pWin, compWindowUpdateVisit, pWin->drawable.pScreen);
 }
 
 WindowPtr
-- 
1.7.2.2



More information about the xorg-devel mailing list