Index: Source/core/rendering/compositing/RenderLayerCompositor.cpp |
diff --git a/Source/core/rendering/compositing/RenderLayerCompositor.cpp b/Source/core/rendering/compositing/RenderLayerCompositor.cpp |
index 32563e506ffc7042cd66ec0c7de38d3caf1fb4bb..f62b204885829561013f04195cf29e35b2e02f3a 100644 |
--- a/Source/core/rendering/compositing/RenderLayerCompositor.cpp |
+++ b/Source/core/rendering/compositing/RenderLayerCompositor.cpp |
@@ -388,6 +388,14 @@ void RenderLayerCompositor::setNeedsCompositingUpdate(CompositingUpdateType upda |
m_renderView.frameView()->scheduleAnimation(); |
} |
+static void clearAncestorDependentPropertyCacheRecursive(RenderLayer* layer) |
+{ |
+ layer->clearAncestorDependentPropertyCache(); |
+ RenderLayerStackingNodeIterator iterator(*layer->stackingNode(), AllChildren); |
+ for (RenderLayer* child = layer->firstChild(); child; child = child->nextSibling()) |
+ clearAncestorDependentPropertyCacheRecursive(child); |
+} |
+ |
void RenderLayerCompositor::updateCompositingLayers() |
{ |
TRACE_EVENT0("blink_rendering", "RenderLayerCompositor::updateCompositingLayers"); |
@@ -405,6 +413,9 @@ void RenderLayerCompositor::updateCompositingLayers() |
updateCompositingLayersInternal(); |
+ // Clear data only valid during compositing updates. |
+ clearAncestorDependentPropertyCacheRecursive(rootRenderLayer()); |
+ |
lifecycle().advanceTo(DocumentLifecycle::CompositingClean); |
DocumentAnimations::startPendingAnimations(m_renderView.document()); |