Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(922)

Unified Diff: Source/core/rendering/RenderLayerCompositor.cpp

Issue 14863002: Only update composited-scrolling state once after layout. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: updating expectations. Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/rendering/RenderLayerCompositor.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« no previous file with comments | « Source/core/rendering/RenderLayerCompositor.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698