Title: [245376] branches/safari-608.1.24-branch/Source/WebCore
Revision
245376
Author
[email protected]
Date
2019-05-15 22:43:00 -0700 (Wed, 15 May 2019)

Log Message

Cherry-pick r245147. rdar://problem/50621407

    fast/hidpi/video-controls-in-hidpi.html sometimes asserts in WK1
    https://bugs.webkit.org/show_bug.cgi?id=197695

    Reviewed by Zalan Bujtas.

    With the backing-sharing changes that landed in r245058, some WebKit1 tests with media controls asserted in
    RenderLayerBacking::computeParentGraphicsLayerRect() because a layer would have a m_ancestorClippingLayer,
    but backgroundClipRect() would return an infinite rect.

    This happened when a layer tree change caused the layer's compositing ancestor to no longer isolate
    composited blending (which affects the behavior of RenderLayerCompositor:clippedByAncestor()), but we failed
    to mark its composited children as needing the configuration update which would eliminate their m_ancestorClippingLayers.

    The fix is to call setChildrenNeedCompositingGeometryUpdate() when isolatesCompositedBlending changes. We don't haev
    setChildrenNeedCompositingConfigurationUpdate(), but setChildrenNeedCompositingGeometryUpdate() has the desired side-effect.

    I was unable to make a standalone test case for this, but the code is exercised by media control tests.

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

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245147 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-608.1.24-branch/Source/WebCore/ChangeLog (245375 => 245376)


--- branches/safari-608.1.24-branch/Source/WebCore/ChangeLog	2019-05-16 05:41:08 UTC (rev 245375)
+++ branches/safari-608.1.24-branch/Source/WebCore/ChangeLog	2019-05-16 05:43:00 UTC (rev 245376)
@@ -1,3 +1,54 @@
+2019-05-15  Kocsen Chung  <[email protected]>
+
+        Cherry-pick r245147. rdar://problem/50621407
+
+    fast/hidpi/video-controls-in-hidpi.html sometimes asserts in WK1
+    https://bugs.webkit.org/show_bug.cgi?id=197695
+    
+    Reviewed by Zalan Bujtas.
+    
+    With the backing-sharing changes that landed in r245058, some WebKit1 tests with media controls asserted in
+    RenderLayerBacking::computeParentGraphicsLayerRect() because a layer would have a m_ancestorClippingLayer,
+    but backgroundClipRect() would return an infinite rect.
+    
+    This happened when a layer tree change caused the layer's compositing ancestor to no longer isolate
+    composited blending (which affects the behavior of RenderLayerCompositor:clippedByAncestor()), but we failed
+    to mark its composited children as needing the configuration update which would eliminate their m_ancestorClippingLayers.
+    
+    The fix is to call setChildrenNeedCompositingGeometryUpdate() when isolatesCompositedBlending changes. We don't haev
+    setChildrenNeedCompositingConfigurationUpdate(), but setChildrenNeedCompositingGeometryUpdate() has the desired side-effect.
+    
+    I was unable to make a standalone test case for this, but the code is exercised by media control tests.
+    
+    * rendering/RenderLayerCompositor.cpp:
+    (WebCore::RenderLayerCompositor::computeCompositingRequirements):
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245147 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2019-05-09  Simon Fraser  <[email protected]>
+
+            fast/hidpi/video-controls-in-hidpi.html sometimes asserts in WK1
+            https://bugs.webkit.org/show_bug.cgi?id=197695
+
+            Reviewed by Zalan Bujtas.
+
+            With the backing-sharing changes that landed in r245058, some WebKit1 tests with media controls asserted in
+            RenderLayerBacking::computeParentGraphicsLayerRect() because a layer would have a m_ancestorClippingLayer,
+            but backgroundClipRect() would return an infinite rect.
+
+            This happened when a layer tree change caused the layer's compositing ancestor to no longer isolate
+            composited blending (which affects the behavior of RenderLayerCompositor:clippedByAncestor()), but we failed
+            to mark its composited children as needing the configuration update which would eliminate their m_ancestorClippingLayers.
+
+            The fix is to call setChildrenNeedCompositingGeometryUpdate() when isolatesCompositedBlending changes. We don't haev
+            setChildrenNeedCompositingConfigurationUpdate(), but setChildrenNeedCompositingGeometryUpdate() has the desired side-effect.
+
+            I was unable to make a standalone test case for this, but the code is exercised by media control tests.
+
+            * rendering/RenderLayerCompositor.cpp:
+            (WebCore::RenderLayerCompositor::computeCompositingRequirements):
+
 2019-05-15  Alan Coon  <[email protected]>
 
         Revert r245025. rdar://problem/50753129

Modified: branches/safari-608.1.24-branch/Source/WebCore/rendering/RenderLayerCompositor.cpp (245375 => 245376)


--- branches/safari-608.1.24-branch/Source/WebCore/rendering/RenderLayerCompositor.cpp	2019-05-16 05:41:08 UTC (rev 245375)
+++ branches/safari-608.1.24-branch/Source/WebCore/rendering/RenderLayerCompositor.cpp	2019-05-16 05:43:00 UTC (rev 245376)
@@ -955,7 +955,13 @@
         addToOverlapMap(overlapMap, layer, layerExtent);
 
 #if ENABLE(CSS_COMPOSITING)
+    bool isolatedCompositedBlending = layer.isolatesCompositedBlending();
     layer.setHasNotIsolatedCompositedBlendingDescendants(childState.hasNotIsolatedCompositedBlendingDescendants);
+    if (layer.isolatesCompositedBlending() != isolatedCompositedBlending) {
+        // isolatedCompositedBlending affects the result of clippedByAncestor().
+        layer.setChildrenNeedCompositingGeometryUpdate();
+    }
+
     ASSERT(!layer.hasNotIsolatedCompositedBlendingDescendants() || layer.hasNotIsolatedBlendingDescendants());
 #endif
     // Now check for reasons to become composited that depend on the state of descendant layers.
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to