// The descendant-dependent flags system is badly broken because we clean dirty // bits in upward tree walks, which means we need to call updateDescendantDependentFlags // at every node in the tree to fully clean all the dirty bits. While we'll in // the process of fixing this issue, updateDescendantDependentFlagsForEntireSubtree // provides a big hammer for actually cleaning all the dirty bits in a subtree. // // FIXME: Remove this function once the descendant-dependent flags system keeps // its dirty bits scoped to subtrees. void updateDescendantDependentFlagsForEntireSubtree(PaintLayer& layer) { layer.updateDescendantDependentFlags(); for (PaintLayer* child = layer.firstChild(); child; child = child->nextSibling()) updateDescendantDependentFlagsForEntireSubtree(*child); }
static void paintLayers(PaintLayer& layer, SimDisplayItemList& displayList) { if (layer.isAllowedToQueryCompositingState() && layer.compositingState() == PaintsIntoOwnBacking) { CompositedLayerMapping* mapping = layer.compositedLayerMapping(); GraphicsLayer* graphicsLayer = mapping->mainGraphicsLayer(); if (graphicsLayer->hasTrackedPaintInvalidations()) { ContentLayerDelegate* delegate = graphicsLayer->contentLayerDelegateForTesting(); delegate->paintContents(&displayList, WebRect(0, 0, layer.size().width(), layer.size().height())); graphicsLayer->resetTrackedPaintInvalidations(); } } for (PaintLayer* child = layer.firstChild(); child; child = child->nextSibling()) paintLayers(*child, displayList); }