Commit 3e7f838a authored by ojan@chromium.org's avatar ojan@chromium.org

Early return in RenderLayerCompositor::updateForceCompositingMode.

We're hitting an assert in requiresCompositingForScrollableFrame,
because it depends on layout information. With
http://src.chromium.org/viewvc/blink?revision=171366&view=revision,
we now try to update this state when setting forceCompositingMode,
at which point, layout is not necessarily up to date.

We can just early return here because this method will be called
again after we've done the layout. This does potentially expose
us to bugs from chicken-egg issues that depend on the
m_forceCompositingMode bit for subframes.

Review URL: https://codereview.chromium.org/236193002

git-svn-id: svn://svn.chromium.org/blink/trunk@171389 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent d91ea459
...@@ -150,8 +150,14 @@ void RenderLayerCompositor::updateForceCompositingMode() ...@@ -150,8 +150,14 @@ void RenderLayerCompositor::updateForceCompositingMode()
// FIXME: Can settings really be null here? // FIXME: Can settings really be null here?
if (Settings* settings = m_renderView.document().settings()) { if (Settings* settings = m_renderView.document().settings()) {
bool forceCompositingMode = settings->forceCompositingMode() && m_hasAcceleratedCompositing; 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(); forceCompositingMode = m_compositingReasonFinder.requiresCompositingForScrollableFrame();
}
if (forceCompositingMode != m_forceCompositingMode) { if (forceCompositingMode != m_forceCompositingMode) {
setCompositingLayersNeedRebuild(); setCompositingLayersNeedRebuild();
m_forceCompositingMode = forceCompositingMode; m_forceCompositingMode = forceCompositingMode;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment