Index: Source/core/rendering/RenderLayerCompositor.cpp |
diff --git a/Source/core/rendering/RenderLayerCompositor.cpp b/Source/core/rendering/RenderLayerCompositor.cpp |
index 37bcbdc76bf4f45cd5454f3d765c5a9226ada6dc..8dfcfe82615d49e2c7f06891b70e7eb740f02b28 100644 |
--- a/Source/core/rendering/RenderLayerCompositor.cpp |
+++ b/Source/core/rendering/RenderLayerCompositor.cpp |
@@ -218,6 +218,7 @@ RenderLayerCompositor::RenderLayerCompositor(RenderView* renderView) |
, m_compositingLayersNeedRebuild(false) |
, m_forceCompositingMode(false) |
, m_inPostLayoutUpdate(false) |
+ , m_needsUpdateCompositingRequirementsState(false) |
, m_isTrackingRepaints(false) |
, m_rootLayerAttachment(RootLayerUnattached) |
#if !LOG_DISABLED |
@@ -330,6 +331,29 @@ bool RenderLayerCompositor::hasAnyAdditionalCompositedLayers(const RenderLayer* |
return m_compositedLayerCount > (rootLayer->isComposited() ? 1 : 0); |
} |
+void RenderLayerCompositor::updateCompositingRequirementsState() |
+{ |
+ TRACE_EVENT0("blink_rendering", "RenderLayerCompositor::updateCompositingRequirementsState"); |
+ |
+ if (!m_needsUpdateCompositingRequirementsState) |
+ return; |
+ |
+ m_needsUpdateCompositingRequirementsState = false; |
+ |
+ if (!rootRenderLayer() || !rootRenderLayer()->acceleratedCompositingForOverflowScrollEnabled()) |
+ return; |
+ |
+ const FrameView::ScrollableAreaSet* scrollableAreas = m_renderView->frameView()->scrollableAreas(); |
+ if (!scrollableAreas) |
+ return; |
+ |
+ for (HashSet<RenderLayer*>::iterator it = m_outOfFlowPositionedLayers.begin(); it != m_outOfFlowPositionedLayers.end(); ++it) |
+ (*it)->updateHasUnclippedDescendant(); |
+ |
+ for (FrameView::ScrollableAreaSet::iterator it = scrollableAreas->begin(); it != scrollableAreas->end(); ++it) |
+ (*it)->updateNeedsCompositedScrolling(); |
+} |
+ |
void RenderLayerCompositor::updateCompositingLayers(CompositingUpdateType updateType, RenderLayer* updateRoot) |
{ |
// Avoid updating the layers with old values. Compositing layers will be updated after the layout is finished. |
@@ -492,6 +516,16 @@ void RenderLayerCompositor::logLayerInfo(const RenderLayer* layer, int depth) |
} |
#endif |
+void RenderLayerCompositor::addOutOfFlowPositionedLayer(RenderLayer* layer) |
+{ |
+ m_outOfFlowPositionedLayers.add(layer); |
+} |
+ |
+void RenderLayerCompositor::removeOutOfFlowPositionedLayer(RenderLayer* layer) |
+{ |
+ m_outOfFlowPositionedLayers.remove(layer); |
+} |
+ |
bool RenderLayerCompositor::updateBacking(RenderLayer* layer, CompositingChangeRepaint shouldRepaint) |
{ |
bool layerChanged = false; |