| 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);
|
|
|