| Index: Source/core/rendering/compositing/RenderLayerCompositor.cpp
|
| diff --git a/Source/core/rendering/compositing/RenderLayerCompositor.cpp b/Source/core/rendering/compositing/RenderLayerCompositor.cpp
|
| index ba9ca588e812197992c0ff0af3e73e2ed6e3f1aa..ec95089e1ebcd444fc2d3bc2a51e5bc3de494141 100644
|
| --- a/Source/core/rendering/compositing/RenderLayerCompositor.cpp
|
| +++ b/Source/core/rendering/compositing/RenderLayerCompositor.cpp
|
| @@ -285,8 +285,7 @@ void RenderLayerCompositor::setCompositingLayersNeedRebuild()
|
| // FIXME: crbug,com/332248 ideally this could be merged with setNeedsCompositingUpdate().
|
| if (inCompositingMode())
|
| m_compositingLayersNeedRebuild = true;
|
| -
|
| - m_renderView.frameView()->scheduleAnimation();
|
| + page()->animator().scheduleVisualUpdate();
|
| }
|
|
|
| void RenderLayerCompositor::updateCompositingRequirementsState()
|
| @@ -385,7 +384,7 @@ void RenderLayerCompositor::setNeedsCompositingUpdate(CompositingUpdateType upda
|
| break;
|
| }
|
|
|
| - m_renderView.frameView()->scheduleAnimation();
|
| + page()->animator().scheduleVisualUpdate();
|
| }
|
|
|
| void RenderLayerCompositor::updateCompositingLayers()
|
| @@ -411,6 +410,25 @@ void RenderLayerCompositor::updateCompositingLayers()
|
| ASSERT(m_renderView.document().lifecycle().state() == DocumentLifecycle::CompositingClean);
|
| }
|
|
|
| +void RenderLayerCompositor::scheduleAnimationIfNeeded()
|
| +{
|
| + LocalFrame* localFrame = &m_renderView.frameView()->frame();
|
| + for (LocalFrame* currentFrame = localFrame; currentFrame; currentFrame = currentFrame->tree().traverseNext(localFrame)) {
|
| + if (currentFrame->contentRenderer()) {
|
| + RenderLayerCompositor* childCompositor = currentFrame->contentRenderer()->compositor();
|
| + if (childCompositor && childCompositor->hasUnresolvedDirtyBits()) {
|
| + m_renderView.frameView()->scheduleAnimation();
|
| + return;
|
| + }
|
| + }
|
| + }
|
| +}
|
| +
|
| +bool RenderLayerCompositor::hasUnresolvedDirtyBits()
|
| +{
|
| + return m_needsToRecomputeCompositingRequirements || m_compositingLayersNeedRebuild || m_needsToUpdateLayerTreeGeometry || m_needsUpdateCompositingRequirementsState || m_pendingUpdateType != GraphicsLayerUpdater::DoNotForceUpdate;
|
| +}
|
| +
|
| void RenderLayerCompositor::updateCompositingLayersInternal()
|
| {
|
| if (isMainFrame() && m_renderView.frameView())
|
|
|