Index: Source/core/rendering/compositing/RenderLayerCompositor.cpp |
diff --git a/Source/core/rendering/compositing/RenderLayerCompositor.cpp b/Source/core/rendering/compositing/RenderLayerCompositor.cpp |
index 36ca9aea7e5aecf81851574b24ee3f1d683a3f83..bea72b7c41d00b77b800d08482db6a03892cc551 100644 |
--- a/Source/core/rendering/compositing/RenderLayerCompositor.cpp |
+++ b/Source/core/rendering/compositing/RenderLayerCompositor.cpp |
@@ -150,8 +150,14 @@ void RenderLayerCompositor::updateForceCompositingMode() |
// FIXME: Can settings really be null here? |
if (Settings* settings = m_renderView.document().settings()) { |
bool forceCompositingMode = settings->forceCompositingMode() && m_hasAcceleratedCompositing; |
- if (forceCompositingMode && !isMainFrame()) |
+ if (forceCompositingMode && !isMainFrame()) { |
+ // requiresCompositingForScrollableFrame will return a stale value if the RenderView |
+ // needsLayout. Skip updating m_forceCompositingMode here as we'll call back into |
+ // this method at the end of layout. |
+ if (m_renderView.needsLayout()) |
+ return; |
forceCompositingMode = m_compositingReasonFinder.requiresCompositingForScrollableFrame(); |
+ } |
if (forceCompositingMode != m_forceCompositingMode) { |
setCompositingLayersNeedRebuild(); |
m_forceCompositingMode = forceCompositingMode; |