| Index: Source/core/rendering/compositing/RenderLayerCompositor.cpp
|
| diff --git a/Source/core/rendering/compositing/RenderLayerCompositor.cpp b/Source/core/rendering/compositing/RenderLayerCompositor.cpp
|
| index cec9b8f870ced809b69fcdc3400137229c2bd9bb..0f7d4a139e5e4c7a6cbbc35def7ed1cdf3e438b7 100644
|
| --- a/Source/core/rendering/compositing/RenderLayerCompositor.cpp
|
| +++ b/Source/core/rendering/compositing/RenderLayerCompositor.cpp
|
| @@ -257,25 +257,37 @@ void RenderLayerCompositor::updateIfNeededRecursive()
|
| void RenderLayerCompositor::setNeedsCompositingUpdate(CompositingUpdateType updateType)
|
| {
|
| ASSERT(updateType != CompositingUpdateNone);
|
| - // FIXME: Technically we only need to do this when the FrameView's isScrollable method
|
| - // would return a different value.
|
| - if (updateType == CompositingUpdateAfterLayout)
|
| - m_rootShouldAlwaysCompositeDirty = true;
|
|
|
| // FIXME: This function should only set dirty bits. We shouldn't
|
| // enable compositing mode here.
|
| // We check needsLayout here because we don't know if we need to enable
|
| // compositing mode until layout is up-to-date because we need to know
|
| // if this frame scrolls.
|
| + //
|
| + // NOTE: CastStreamingApiTestWithPixelOutput.RtpStreamError triggers
|
| + // an ASSERT when this code is removed.
|
| if (!m_renderView.needsLayout())
|
| enableCompositingModeIfNeeded();
|
|
|
| m_pendingUpdateType = std::max(m_pendingUpdateType, updateType);
|
| -
|
| page()->animator().scheduleVisualUpdate();
|
| lifecycle().ensureStateAtMost(DocumentLifecycle::LayoutClean);
|
| }
|
|
|
| +void RenderLayerCompositor::didLayout()
|
| +{
|
| + // FIXME: Technically we only need to do this when the FrameView's
|
| + // isScrollable method would return a different value.
|
| + m_rootShouldAlwaysCompositeDirty = true;
|
| + enableCompositingModeIfNeeded();
|
| +
|
| + // FIXME: Rather than marking the entire RenderView as dirty, we should
|
| + // track which RenderLayers moved during layout and only dirty those
|
| + // specific RenderLayers.
|
| + rootRenderLayer()->setNeedsToUpdateAncestorDependentProperties();
|
| + setNeedsCompositingUpdate(CompositingUpdateAfterCompositingInputChange);
|
| +}
|
| +
|
| #if ASSERT_ENABLED
|
|
|
| void RenderLayerCompositor::assertNoUnresolvedDirtyBits()
|
| @@ -348,12 +360,6 @@ void RenderLayerCompositor::updateIfNeeded()
|
| GraphicsLayerUpdater::UpdateType graphicsLayerUpdateType = GraphicsLayerUpdater::DoNotForceUpdate;
|
| CompositingPropertyUpdater::UpdateType compositingPropertyUpdateType = CompositingPropertyUpdater::DoNotForceUpdate;
|
|
|
| - // FIXME: Teach non-style compositing updates how to do partial tree walks.
|
| - if (updateType >= CompositingUpdateAfterLayout) {
|
| - graphicsLayerUpdateType = GraphicsLayerUpdater::ForceUpdate;
|
| - compositingPropertyUpdateType = CompositingPropertyUpdater::ForceUpdate;
|
| - }
|
| -
|
| RenderLayer* updateRoot = rootRenderLayer();
|
|
|
| Vector<RenderLayer*> layersNeedingRepaint;
|
|
|