Title: [154417] trunk/Source/WebCore
Revision
154417
Author
[email protected]
Date
2013-08-21 14:32:41 -0700 (Wed, 21 Aug 2013)

Log Message

<https://webkit.org/b/116901> ASSERTION FAILED: !m_visibleDescendantStatusDirty on twitter

Reviewed by Beth Dakin.

In order to make decisions about compositing, the m_hasVisibleDescendant bit on RenderLayers
needs to be up-to-date when RenderLayerCompositor::computeCompositingRequirements is recursing
over the RenderLayer tree.

However, was possible for computeCompositingRequirements() to hit a layer whose m_visibleDescendantStatusDirty
bit was set; we only clear this bit from collectLayers() (when updating z-order lists), and from styleChanged()
which requires that style changed on the layer itself.

Fix by always calling updateDescendantDependentFlags() from computeCompositingRequirements().

Wasn't able to easily get a reduced testcase.

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::computeCompositingRequirements):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (154416 => 154417)


--- trunk/Source/WebCore/ChangeLog	2013-08-21 21:24:22 UTC (rev 154416)
+++ trunk/Source/WebCore/ChangeLog	2013-08-21 21:32:41 UTC (rev 154417)
@@ -1,3 +1,24 @@
+2013-08-21  Simon Fraser  <[email protected]>
+
+        <https://webkit.org/b/116901> ASSERTION FAILED: !m_visibleDescendantStatusDirty on twitter
+
+        Reviewed by Beth Dakin.
+        
+        In order to make decisions about compositing, the m_hasVisibleDescendant bit on RenderLayers
+        needs to be up-to-date when RenderLayerCompositor::computeCompositingRequirements is recursing
+        over the RenderLayer tree.
+        
+        However, was possible for computeCompositingRequirements() to hit a layer whose m_visibleDescendantStatusDirty
+        bit was set; we only clear this bit from collectLayers() (when updating z-order lists), and from styleChanged()
+        which requires that style changed on the layer itself.
+        
+        Fix by always calling updateDescendantDependentFlags() from computeCompositingRequirements().
+
+        Wasn't able to easily get a reduced testcase.
+
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
+
 2013-08-21  Alex Christensen  <[email protected]>
 
         <https://webkit.org/b/120137> Separating Win32 and Win64 builds.

Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (154416 => 154417)


--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2013-08-21 21:24:22 UTC (rev 154416)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2013-08-21 21:32:41 UTC (rev 154417)
@@ -958,6 +958,7 @@
 //
 void RenderLayerCompositor::computeCompositingRequirements(RenderLayer* ancestorLayer, RenderLayer* layer, OverlapMap* overlapMap, CompositingState& compositingState, bool& layersChanged, bool& descendantHas3DTransform)
 {
+    layer->updateDescendantDependentFlags();
     layer->updateLayerListsIfNeeded();
 
     if (layer->isOutOfFlowRenderFlowThread())
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to