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

Changeset 90484 in webkit


Ignore:
Timestamp:
Jul 6, 2011, 1:15:07 PM (15 years ago)
Author:
Simon Fraser
Message:

2011-07-06 Simon Fraser <Simon Fraser>

Have RenderLayerCompositor take care of clearing backing store when entering the page cache
https://bugs.webkit.org/show_bug.cgi?id=64018

Reviewed by Joseph Pecoraro.

Move responsibility for tearing down all RenderLayer backing stores from
RenderLayer itself to RenderLayerCompositor, since RenderLayerCompositor
manages backing store creation and destruction in general.

  • page/FrameView.cpp: (WebCore::FrameView::clearBackingStores):
  • rendering/RenderLayer.cpp:
  • rendering/RenderLayer.h:
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::clearBackingForLayerIncludingDescendants): (WebCore::RenderLayerCompositor::clearBackingForAllLayers):
  • rendering/RenderLayerCompositor.h:
Location:
trunk/Source/WebCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r90478 r90484  
     12011-07-06  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Have RenderLayerCompositor take care of clearing backing store when entering the page cache
     4        https://bugs.webkit.org/show_bug.cgi?id=64018
     5
     6        Reviewed by Joseph Pecoraro.
     7
     8        Move responsibility for tearing down all RenderLayer backing stores from
     9        RenderLayer itself to RenderLayerCompositor, since RenderLayerCompositor
     10        manages backing store creation and destruction in general.
     11
     12        * page/FrameView.cpp:
     13        (WebCore::FrameView::clearBackingStores):
     14        * rendering/RenderLayer.cpp:
     15        * rendering/RenderLayer.h:
     16        * rendering/RenderLayerCompositor.cpp:
     17        (WebCore::RenderLayerCompositor::clearBackingForLayerIncludingDescendants):
     18        (WebCore::RenderLayerCompositor::clearBackingForAllLayers):
     19        * rendering/RenderLayerCompositor.h:
     20
    1212011-07-06  Ryuan Choi  <ryuan.choi@samsung.com>
    222
  • trunk/Source/WebCore/page/FrameView.cpp

    r90302 r90484  
    641641    ASSERT(compositor->inCompositingMode());
    642642    compositor->enableCompositingMode(false);
    643     root->layer()->clearBackingIncludingDescendants();
     643    compositor->clearBackingForAllLayers();
    644644}
    645645
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r90152 r90484  
    36583658}
    36593659
    3660 void RenderLayer::clearBackingIncludingDescendants()
    3661 {
    3662     clearBacking();
    3663 
    3664     for (RenderLayer* l = firstChild(); l; l = l->nextSibling())
    3665         l->clearBackingIncludingDescendants();
    3666 }
    3667 
    36683660bool RenderLayer::hasCompositedMask() const
    36693661{
  • trunk/Source/WebCore/rendering/RenderLayer.h

    r90152 r90484  
    443443    RenderLayerBacking* ensureBacking();
    444444    void clearBacking();
    445     void clearBackingIncludingDescendants();
    446445    virtual GraphicsLayer* layerForHorizontalScrollbar() const;
    447446    virtual GraphicsLayer* layerForVerticalScrollbar() const;
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp

    r89394 r90484  
    11691169}
    11701170
     1171void RenderLayerCompositor::clearBackingForLayerIncludingDescendants(RenderLayer* layer)
     1172{
     1173    if (!layer)
     1174        return;
     1175
     1176    if (layer->isComposited())
     1177        layer->clearBacking();
     1178   
     1179    for (RenderLayer* currLayer = layer->firstChild(); currLayer; currLayer = currLayer->nextSibling())
     1180        clearBackingForLayerIncludingDescendants(currLayer);
     1181}
     1182
     1183void RenderLayerCompositor::clearBackingForAllLayers()
     1184{
     1185    clearBackingForLayerIncludingDescendants(m_renderView->layer());
     1186}
     1187
    11711188void RenderLayerCompositor::updateRootLayerPosition()
    11721189{
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.h

    r89394 r90484  
    148148    void didMoveOnscreen();
    149149    void willMoveOffscreen();
     150
     151    void clearBackingForAllLayers();
    150152   
    151153    void didStartAcceleratedAnimation(CSSPropertyID);
     
    209211    // Make or destroy the backing for this layer; returns true if backing changed.
    210212    bool updateBacking(RenderLayer*, CompositingChangeRepaint shouldRepaint);
     213
     214    void clearBackingForLayerIncludingDescendants(RenderLayer*);
    211215
    212216    // Repaint the given rect (which is layer's coords), and regions of child layers that intersect that rect.
Note: See TracChangeset for help on using the changeset viewer.