⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 252070 in webkit


Ignore:
Timestamp:
Nov 5, 2019, 12:11:32 PM (7 years ago)
Author:
Simon Fraser
Message:

Content can disappear with a combination of <video> with controls and clipping
https://bugs.webkit.org/show_bug.cgi?id=203834
Source/WebCore:

rdar://problem/56559648

Reviewed by Zalan Bujtas.

<video> with controls triggered a bug where a backing-sharing layer also claimed
that it didn't need any backing store. RenderLayerCompositor::requiresOwnBackingStore()
could early-return with 'false' if a layer had an indirect compositing reason of "Clipping",
while also backing-sharing. We need to check for backing-sharing first.

Test: compositing/shared-backing/clipping-and-shared-backing.html

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::setBackingSharingLayers):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::requiresOwnBackingStore const):

LayoutTests:

Reviewed by Zalan Bujtas.

  • compositing/shared-backing/clipping-and-shared-backing-expected.html: Added.
  • compositing/shared-backing/clipping-and-shared-backing.html: Added.
Location:
trunk
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r252069 r252070  
     12019-11-05  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Content can disappear with a combination of <video> with controls and clipping
     4        https://bugs.webkit.org/show_bug.cgi?id=203834
     5
     6        Reviewed by Zalan Bujtas.
     7
     8        * compositing/shared-backing/clipping-and-shared-backing-expected.html: Added.
     9        * compositing/shared-backing/clipping-and-shared-backing.html: Added.
     10
    1112019-11-05  Said Abou-Hallawa  <sabouhallawa@apple.com>
    212
  • trunk/Source/WebCore/ChangeLog

    r252069 r252070  
     12019-11-05  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Content can disappear with a combination of <video> with controls and clipping
     4        https://bugs.webkit.org/show_bug.cgi?id=203834
     5        rdar://problem/56559648
     6
     7        Reviewed by Zalan Bujtas.
     8       
     9        <video> with controls triggered a bug where a backing-sharing layer also claimed
     10        that it didn't need any backing store. RenderLayerCompositor::requiresOwnBackingStore()
     11        could early-return with 'false' if a layer had an indirect compositing reason of "Clipping",
     12        while also backing-sharing. We need to check for backing-sharing first.
     13
     14        Test: compositing/shared-backing/clipping-and-shared-backing.html
     15
     16        * rendering/RenderLayerBacking.cpp:
     17        (WebCore::RenderLayerBacking::setBackingSharingLayers):
     18        * rendering/RenderLayerCompositor.cpp:
     19        (WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
     20
    1212019-11-05  Said Abou-Hallawa  <sabouhallawa@apple.com>
    222
  • trunk/Source/WebCore/rendering/RenderLayerBacking.cpp

    r251385 r252070  
    295295    clearBackingSharingLayerProviders(m_backingSharingLayers);
    296296
    297     if (sharingLayers != m_backingSharingLayers)
     297    if (sharingLayers != m_backingSharingLayers) {
     298        if (sharingLayers.size())
     299            setRequiresOwnBackingStore(true);
    298300        setContentsNeedDisplay(); // This could be optimized to only repaint rects for changed layers.
     301    }
    299302
    300303    auto oldSharingLayers = WTFMove(m_backingSharingLayers);
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp

    r251273 r252070  
    24232423        return true;
    24242424
     2425    if (layer.isComposited() && layer.backing()->hasBackingSharingLayers())
     2426        return true;
     2427
    24252428    if (layer.mustCompositeForIndirectReasons()) {
    24262429        IndirectCompositingReason reason = layer.indirectCompositingReason();
     
    24332436    }
    24342437
     2438    // FIXME: We really need to keep track of the ancestor layer that has its own backing store.
    24352439    if (!ancestorCompositedBounds.contains(layerCompositedBoundsInAncestor))
    2436         return true;
    2437 
    2438     if (layer.isComposited() && layer.backing()->hasBackingSharingLayers())
    24392440        return true;
    24402441
Note: See TracChangeset for help on using the changeset viewer.