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

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

Issue 183763016: Reduce compositing update in Silk's toggle_drawer by 20% (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix win build Created 6 years, 9 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 | « no previous file | Source/core/rendering/compositing/CompositedLayerMapping.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/rendering/RenderLayer.cpp
diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp
index 42f61fba0ee347a78f79d491e8b285c7e06b5213..b8c06335b466401b9dfd65c2b223bb1e56e04d7b 100644
--- a/Source/core/rendering/RenderLayer.cpp
+++ b/Source/core/rendering/RenderLayer.cpp
@@ -710,8 +710,17 @@ void RenderLayer::setHasVisibleContent()
return;
}
- m_visibleContentStatusDirty = false;
m_hasVisibleContent = true;
+ m_visibleContentStatusDirty = false;
+
+ {
+ // FIXME: We can remove this code once we remove the recursive tree
+ // walk inside updateGraphicsLayerGeometry.
+ DisableCompositingQueryAsserts disabler;
+ if (RenderLayer* compositingLayer = enclosingCompositingLayer())
+ compositingLayer->compositedLayerMapping()->setNeedsGeometryUpdate();
+ }
+
repainter().computeRepaintRects(renderer()->containerForRepaint());
if (!m_stackingNode->isNormalFlowOnly()) {
// We don't collect invisible layers in z-order lists if we are not in compositing mode.
@@ -848,6 +857,7 @@ void RenderLayer::updateDescendantDependentFlags()
}
if (m_visibleContentStatusDirty) {
+ bool previouslyHasVisibleCOntent = m_hasVisibleContent;
if (renderer()->style()->visibility() == VISIBLE)
m_hasVisibleContent = true;
else {
@@ -875,6 +885,14 @@ void RenderLayer::updateDescendantDependentFlags()
}
}
m_visibleContentStatusDirty = false;
+
+ // FIXME: We can remove this code once we remove the recursive tree
+ // walk inside updateGraphicsLayerGeometry.
+ if (hasVisibleContent() != previouslyHasVisibleCOntent) {
+ DisableCompositingQueryAsserts disabler;
+ if (RenderLayer* compositingLayer = enclosingCompositingLayer())
+ compositingLayer->compositedLayerMapping()->setNeedsGeometryUpdate();
+ }
}
}
@@ -3511,6 +3529,7 @@ CompositedLayerMappingPtr RenderLayer::ensureCompositedLayerMapping()
{
if (!m_compositedLayerMapping) {
m_compositedLayerMapping = adoptPtr(new CompositedLayerMapping(this));
+ m_compositedLayerMapping->setNeedsGeometryUpdate();
updateOrRemoveFilterEffectRenderer();
@@ -3522,6 +3541,9 @@ CompositedLayerMappingPtr RenderLayer::ensureCompositedLayerMapping()
void RenderLayer::clearCompositedLayerMapping(bool layerBeingDestroyed)
{
+ if (!layerBeingDestroyed)
+ m_compositedLayerMapping->setNeedsGeometryUpdate();
+
m_compositedLayerMapping.clear();
if (!layerBeingDestroyed)
@@ -3877,6 +3899,9 @@ void RenderLayer::styleChanged(StyleDifference diff, const RenderStyle* oldStyle
// https://code.google.com/p/chromium/issues/detail?id=343756
DisableCompositingQueryAsserts disabler;
+ if (RenderLayer* compositingLayer = enclosingCompositingLayer())
+ compositingLayer->compositedLayerMapping()->setNeedsGeometryUpdate();
+
const RenderStyle* newStyle = renderer()->style();
compositor()->updateLayerCompositingState(this, RenderLayerCompositor::UseChickenEggHacks);
« no previous file with comments | « no previous file | Source/core/rendering/compositing/CompositedLayerMapping.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698