| Index: Source/WebCore/rendering/RenderLayerCompositor.cpp
|
| diff --git a/Source/WebCore/rendering/RenderLayerCompositor.cpp b/Source/WebCore/rendering/RenderLayerCompositor.cpp
|
| index d49df157b71d16d3dfb4c9338d8e85178bce5db7..65c35e245cd4d5b9b777de4bebee187dbf5d7b66 100644
|
| --- a/Source/WebCore/rendering/RenderLayerCompositor.cpp
|
| +++ b/Source/WebCore/rendering/RenderLayerCompositor.cpp
|
| @@ -323,6 +323,22 @@ bool RenderLayerCompositor::hasAnyAdditionalCompositedLayers(const RenderLayer*
|
| return m_compositedLayerCount > (rootLayer->isComposited() ? 1 : 0);
|
| }
|
|
|
| +void RenderLayerCompositor::updateDescendantsAreContiguousInStackingOrderRecursive(RenderLayer* layer)
|
| +{
|
| + for (RenderLayer* child = layer->firstChild(); child; child = child->nextSibling())
|
| + updateDescendantsAreContiguousInStackingOrderRecursive(child);
|
| +
|
| + if (layer->isStackingContext() && layer->m_descendantsAreContiguousInStackingOrderDirty)
|
| + layer->updateDescendantsAreContiguousInStackingOrder();
|
| +}
|
| +
|
| +void RenderLayerCompositor::updateNeedsCompositedScrolling(RenderLayer* layer)
|
| +{
|
| + layer->updateNeedsCompositedScrolling();
|
| + for (RenderLayer* child = layer->firstChild(); child; child = child->nextSibling())
|
| + updateNeedsCompositedScrolling(child);
|
| +}
|
| +
|
| void RenderLayerCompositor::updateCompositingLayers(CompositingUpdateType updateType, RenderLayer* updateRoot)
|
| {
|
| m_updateCompositingLayersTimer.stop();
|
| @@ -383,6 +399,11 @@ void RenderLayerCompositor::updateCompositingLayers(CompositingUpdateType update
|
| #endif
|
|
|
| if (checkForHierarchyUpdate) {
|
| + // FIXME(vollick): can we skip this altogether in some cases?
|
| + updateRoot->updateDescendantDependentFlags();
|
| + updateDescendantsAreContiguousInStackingOrderRecursive(updateRoot);
|
| + updateNeedsCompositedScrolling(updateRoot);
|
| +
|
| // Go through the layers in presentation order, so that we can compute which RenderLayers need compositing layers.
|
| // FIXME: we could maybe do this and the hierarchy udpate in one pass, but the parenting logic would be more complex.
|
| CompositingState compState(updateRoot, m_compositingConsultsOverlap);
|
|
|