Changeset 184421 in webkit


Ignore:
Timestamp:
May 15, 2015, 4:29:29 PM (11 years ago)
Author:
Simon Fraser
Message:

REGRESSION (r183300): Background missing on top links on apple.com
https://bugs.webkit.org/show_bug.cgi?id=145079
rdar://problem/20914252

Reviewed by Tim Horton.

Source/WebCore:

GraphicsLayerCA::setVisibleAndCoverageRects() only set the m_intersectsCoverageRect
flag if the coverage rect changed, but it doesn't if you simply change the size of
the layer.

Instead, always re-evaluate the intersection, and set the CoverageRectChanged bit
if it changes.

Test: compositing/visible-rect/backing-change-height-from-zero.html

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::setVisibleAndCoverageRects):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::shouldSkipLayerInDump): Don't skip any layers in a
debug layer dump, to assist debugging.

LayoutTests:

Composited box that toggles to a non-zero height and dumps layers.

  • compositing/visible-rect/backing-change-height-from-zero-expected.txt: Added.
  • compositing/visible-rect/backing-change-height-from-zero.html: Added.
Location:
trunk
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r184420 r184421  
     12015-05-15  Simon Fraser  <simon.fraser@apple.com>
     2
     3        REGRESSION (r183300): Background missing on top links on apple.com
     4        https://bugs.webkit.org/show_bug.cgi?id=145079
     5        rdar://problem/20914252
     6
     7        Reviewed by Tim Horton.
     8
     9        Composited box that toggles to a non-zero height and dumps layers.
     10
     11        * compositing/visible-rect/backing-change-height-from-zero-expected.txt: Added.
     12        * compositing/visible-rect/backing-change-height-from-zero.html: Added.
     13
    1142015-05-15  Sam Weinig  <sam@webkit.org>
    215
  • trunk/Source/WebCore/ChangeLog

    r184420 r184421  
     12015-05-15  Simon Fraser  <simon.fraser@apple.com>
     2
     3        REGRESSION (r183300): Background missing on top links on apple.com
     4        https://bugs.webkit.org/show_bug.cgi?id=145079
     5        rdar://problem/20914252
     6
     7        Reviewed by Tim Horton.
     8
     9        GraphicsLayerCA::setVisibleAndCoverageRects() only set the m_intersectsCoverageRect
     10        flag if the coverage rect changed, but it doesn't if you simply change the size of
     11        the layer.
     12
     13        Instead, always re-evaluate the intersection, and set the CoverageRectChanged bit
     14        if it changes.
     15
     16        Test: compositing/visible-rect/backing-change-height-from-zero.html
     17
     18        * platform/graphics/ca/GraphicsLayerCA.cpp:
     19        (WebCore::GraphicsLayerCA::setVisibleAndCoverageRects):
     20        * rendering/RenderLayerBacking.cpp:
     21        (WebCore::RenderLayerBacking::shouldSkipLayerInDump): Don't skip any layers in a
     22        debug layer dump, to assist debugging.
     23
    1242015-05-15  Sam Weinig  <sam@webkit.org>
    225
  • trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp

    r183970 r184421  
    12611261        return;
    12621262
     1263    // FIXME: we need to take reflections into account when determining whether this layer intersects the coverage rect.
     1264    bool intersectsCoverageRect = !allowBackingStoreDetachment || m_coverageRect.intersects(FloatRect(m_boundsOrigin, size()));
     1265    if (intersectsCoverageRect != m_intersectsCoverageRect) {
     1266        m_uncommittedChanges |= CoverageRectChanged;
     1267        m_intersectsCoverageRect = intersectsCoverageRect;
     1268    }
     1269
    12631270    if (visibleRectChanged) {
    12641271        m_uncommittedChanges |= CoverageRectChanged;
    12651272        m_visibleRect = rects.visibleRect;
    1266        
     1273
    12671274        if (GraphicsLayerCA* maskLayer = downcast<GraphicsLayerCA>(m_maskLayer)) {
    12681275            // FIXME: this assumes that the mask layer has the same geometry as this layer (which is currently always true).
     
    12751282        m_uncommittedChanges |= CoverageRectChanged;
    12761283        m_coverageRect = rects.coverageRect;
    1277 
    1278         // FIXME: we need to take reflections into account when determining whether this layer intersects the coverage rect.
    1279         m_intersectsCoverageRect = !allowBackingStoreDetachment || m_coverageRect.intersects(FloatRect(m_boundsOrigin, size()));
    12801284
    12811285        if (GraphicsLayerCA* maskLayer = downcast<GraphicsLayerCA>(m_maskLayer)) {
  • trunk/Source/WebCore/rendering/RenderLayerBacking.cpp

    r184395 r184421  
    23942394}
    23952395
    2396 bool RenderLayerBacking::shouldSkipLayerInDump(const GraphicsLayer* layer, LayerTreeAsTextBehavior) const
    2397 {
     2396bool RenderLayerBacking::shouldSkipLayerInDump(const GraphicsLayer* layer, LayerTreeAsTextBehavior behavior) const
     2397{
     2398    if (behavior & LayerTreeAsTextDebug)
     2399        return false;
     2400
    23982401    // Skip the root tile cache's flattening layer.
    23992402    return m_isMainFrameRenderViewLayer && layer && layer == m_childContainmentLayer.get();
Note: See TracChangeset for help on using the changeset viewer.