Title: [90484] trunk/Source/WebCore
- Revision
- 90484
- Author
- [email protected]
- Date
- 2011-07-06 13:15:07 -0700 (Wed, 06 Jul 2011)
Log Message
2011-07-06 Simon Fraser <[email protected]>
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:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (90483 => 90484)
--- trunk/Source/WebCore/ChangeLog 2011-07-06 19:52:20 UTC (rev 90483)
+++ trunk/Source/WebCore/ChangeLog 2011-07-06 20:15:07 UTC (rev 90484)
@@ -1,3 +1,23 @@
+2011-07-06 Simon Fraser <[email protected]>
+
+ 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:
+
2011-07-06 Ryuan Choi <[email protected]>
[Performance] Only call sendContentResizeNotification when the scrollbar actually did change
Modified: trunk/Source/WebCore/page/FrameView.cpp (90483 => 90484)
--- trunk/Source/WebCore/page/FrameView.cpp 2011-07-06 19:52:20 UTC (rev 90483)
+++ trunk/Source/WebCore/page/FrameView.cpp 2011-07-06 20:15:07 UTC (rev 90484)
@@ -640,7 +640,7 @@
RenderLayerCompositor* compositor = root->compositor();
ASSERT(compositor->inCompositingMode());
compositor->enableCompositingMode(false);
- root->layer()->clearBackingIncludingDescendants();
+ compositor->clearBackingForAllLayers();
}
void FrameView::restoreBackingStores()
Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (90483 => 90484)
--- trunk/Source/WebCore/rendering/RenderLayer.cpp 2011-07-06 19:52:20 UTC (rev 90483)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp 2011-07-06 20:15:07 UTC (rev 90484)
@@ -3657,14 +3657,6 @@
m_backing.clear();
}
-void RenderLayer::clearBackingIncludingDescendants()
-{
- clearBacking();
-
- for (RenderLayer* l = firstChild(); l; l = l->nextSibling())
- l->clearBackingIncludingDescendants();
-}
-
bool RenderLayer::hasCompositedMask() const
{
return m_backing && m_backing->hasMaskLayer();
Modified: trunk/Source/WebCore/rendering/RenderLayer.h (90483 => 90484)
--- trunk/Source/WebCore/rendering/RenderLayer.h 2011-07-06 19:52:20 UTC (rev 90483)
+++ trunk/Source/WebCore/rendering/RenderLayer.h 2011-07-06 20:15:07 UTC (rev 90484)
@@ -442,7 +442,6 @@
RenderLayerBacking* backing() const { return m_backing.get(); }
RenderLayerBacking* ensureBacking();
void clearBacking();
- void clearBackingIncludingDescendants();
virtual GraphicsLayer* layerForHorizontalScrollbar() const;
virtual GraphicsLayer* layerForVerticalScrollbar() const;
virtual GraphicsLayer* layerForScrollCorner() const;
Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (90483 => 90484)
--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2011-07-06 19:52:20 UTC (rev 90483)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2011-07-06 20:15:07 UTC (rev 90484)
@@ -1168,6 +1168,23 @@
detachRootPlatformLayer();
}
+void RenderLayerCompositor::clearBackingForLayerIncludingDescendants(RenderLayer* layer)
+{
+ if (!layer)
+ return;
+
+ if (layer->isComposited())
+ layer->clearBacking();
+
+ for (RenderLayer* currLayer = layer->firstChild(); currLayer; currLayer = currLayer->nextSibling())
+ clearBackingForLayerIncludingDescendants(currLayer);
+}
+
+void RenderLayerCompositor::clearBackingForAllLayers()
+{
+ clearBackingForLayerIncludingDescendants(m_renderView->layer());
+}
+
void RenderLayerCompositor::updateRootLayerPosition()
{
if (m_rootPlatformLayer) {
Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.h (90483 => 90484)
--- trunk/Source/WebCore/rendering/RenderLayerCompositor.h 2011-07-06 19:52:20 UTC (rev 90483)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.h 2011-07-06 20:15:07 UTC (rev 90484)
@@ -147,6 +147,8 @@
void didMoveOnscreen();
void willMoveOffscreen();
+
+ void clearBackingForAllLayers();
void didStartAcceleratedAnimation(CSSPropertyID);
@@ -209,6 +211,8 @@
// Make or destroy the backing for this layer; returns true if backing changed.
bool updateBacking(RenderLayer*, CompositingChangeRepaint shouldRepaint);
+ void clearBackingForLayerIncludingDescendants(RenderLayer*);
+
// Repaint the given rect (which is layer's coords), and regions of child layers that intersect that rect.
void recursiveRepaintLayerRect(RenderLayer* layer, const IntRect& rect);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes