On Fri, 31 Dec 2010 16:49:38 +0200, ville.syrj...@nokia.com wrote:

> WindowRec has a new member 'damagedDescendants' that is used to keep
> track of which subtrees need updating. When a window is damaged,
> 'damagedDescendants' will be set for all the ancestors, and when a
> subtree is updated, the tree walk can be stopped early if no damaged
> descendants are present.

I think this raises an interesting general topic - how much of the
current extension private stuff should get folded into the various DIX
structures?? We've got a bunch of non-optional extensions these days and
it might be a nice cleanup job to take their privates and move them.

> CompScreenRec no longer needs the 'damaged' member since the root
> window's 'damagedDescendants' provides the same information.

> Signed-off-by: Ville Syrjälä <ville.syrj...@nokia.com>

This seems like a reasonable optimization to me, reducing the cost of
having any CompositeRedirectAutomatic windows on the screen.

I'm not entirely happy with the name compChildrenUpdate, but given that
compWindowUpdate paints a window into its parent, I don't have a great
suggestion for an alternative name. One option might be to move the
painting code inside the loop:

compPaintWindowToParent(pWin)
{
        if (pWin->damaged)
                ...
                pWin->damaged = FALSE;
}

compChildrenUpdate(pWin)
{
        if (!pWin->damagedDescendents)
                return;
        for (pChild = pWin->lastChild ...)
                compChildrenUpdate(pChild);
                compPaintWindowToParent(pChild);
        }
        pWin->damagedDescendents = FALSE;
}

Or some such. Having two functions looping over the child list seems
ugly...

-- 
keith.pack...@intel.com

Attachment: pgpvzyWpIeDM5.pgp
Description: PGP signature

_______________________________________________
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