Title: [136181] trunk/Source/WebKit2
- Revision
- 136181
- Author
- [email protected]
- Date
- 2012-11-29 16:29:13 -0800 (Thu, 29 Nov 2012)
Log Message
[CoordinatedGraphics] Use OwnPtr for LayerMap's layers in LayerTreeRenderer
https://bugs.webkit.org/show_bug.cgi?id=103650
Reviewed by Noam Rosenthal.
We currently store raw pointers to WebCore::GraphicsLayer in the LayerMap
meaning that we need to delete them manually. This patch leverages smart
pointers and stores layers as OwnPtr in the LayerMap so that the layers
are owned by the HashMap and we don't have to handle memory manually.
* UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:
(WebKit::LayerTreeRenderer::adjustPositionForFixedLayers):
(WebKit::LayerTreeRenderer::setLayerChildren):
(WebKit::LayerTreeRenderer::deleteLayer):
(WebKit::LayerTreeRenderer::ensureLayer):
* UIProcess/CoordinatedGraphics/LayerTreeRenderer.h:
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (136180 => 136181)
--- trunk/Source/WebKit2/ChangeLog 2012-11-30 00:28:13 UTC (rev 136180)
+++ trunk/Source/WebKit2/ChangeLog 2012-11-30 00:29:13 UTC (rev 136181)
@@ -1,3 +1,22 @@
+2012-11-29 Christophe Dumez <[email protected]>
+
+ [CoordinatedGraphics] Use OwnPtr for LayerMap's layers in LayerTreeRenderer
+ https://bugs.webkit.org/show_bug.cgi?id=103650
+
+ Reviewed by Noam Rosenthal.
+
+ We currently store raw pointers to WebCore::GraphicsLayer in the LayerMap
+ meaning that we need to delete them manually. This patch leverages smart
+ pointers and stores layers as OwnPtr in the LayerMap so that the layers
+ are owned by the HashMap and we don't have to handle memory manually.
+
+ * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:
+ (WebKit::LayerTreeRenderer::adjustPositionForFixedLayers):
+ (WebKit::LayerTreeRenderer::setLayerChildren):
+ (WebKit::LayerTreeRenderer::deleteLayer):
+ (WebKit::LayerTreeRenderer::ensureLayer):
+ * UIProcess/CoordinatedGraphics/LayerTreeRenderer.h:
+
2012-11-29 Anders Carlsson <[email protected]>
Add a minimumLayoutWidth WKView property
Modified: trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp (136180 => 136181)
--- trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp 2012-11-30 00:28:13 UTC (rev 136180)
+++ trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp 2012-11-30 00:29:13 UTC (rev 136181)
@@ -216,8 +216,8 @@
FloatPoint renderedScrollPosition = boundedScrollPosition(m_renderedContentsScrollPosition, m_visibleContentsRect, m_contentsSize);
FloatSize delta = scrollPosition - renderedScrollPosition;
- LayerMap::iterator end = m_fixedLayers.end();
- for (LayerMap::iterator it = m_fixedLayers.begin(); it != end; ++it)
+ LayerRawPtrMap::iterator end = m_fixedLayers.end();
+ for (LayerRawPtrMap::iterator it = m_fixedLayers.begin(); it != end; ++it)
toTextureMapperLayer(it->value)->setScrollPositionDeltaIfNeeded(delta);
}
@@ -273,8 +273,9 @@
WebLayerID childID = childIDs[i];
GraphicsLayer* child = layerByID(childID);
if (!child) {
- child = createLayer(childID).leakPtr();
- m_layers.add(childID, child);
+ OwnPtr<GraphicsLayer*> newChild = createLayer(childID);
+ child = newChild.get();
+ m_layers.add(childID, newChild.release());
}
children.append(child);
}
@@ -362,17 +363,15 @@
void LayerTreeRenderer::deleteLayer(WebLayerID layerID)
{
- GraphicsLayer* layer = layerByID(layerID);
+ OwnPtr<GraphicsLayer> layer = m_layers.take(layerID);
if (!layer)
return;
layer->removeFromParent();
- m_layers.remove(layerID);
m_fixedLayers.remove(layerID);
#if USE(GRAPHICS_SURFACE)
m_surfaceBackingStores.remove(layerID);
#endif
- delete layer;
}
@@ -380,12 +379,11 @@
{
LayerMap::iterator it = m_layers.find(id);
if (it != m_layers.end())
- return it->value;
+ return it->value.get();
- // We have to leak the new layer's pointer and manage it ourselves,
- // because OwnPtr is not copyable.
- WebCore::GraphicsLayer* layer = createLayer(id).leakPtr();
- m_layers.add(id, layer);
+ OwnPtr<WebCore::GraphicsLayer> newLayer = createLayer(id);
+ WebCore::GraphicsLayer* layer = newLayer.get();
+ m_layers.add(id, newLayer.release());
return layer;
}
Modified: trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h (136180 => 136181)
--- trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h 2012-11-30 00:28:13 UTC (rev 136180)
+++ trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h 2012-11-30 00:29:13 UTC (rev 136181)
@@ -151,7 +151,6 @@
void removeBackingStoreIfNeeded(WebCore::GraphicsLayer*);
void resetBackingStoreSizeToLayerSize(WebCore::GraphicsLayer*);
- typedef HashMap<WebLayerID, WebCore::GraphicsLayer*> LayerMap;
WebCore::FloatSize m_contentsSize;
WebCore::FloatRect m_visibleContentsRect;
@@ -181,8 +180,10 @@
OwnPtr<WebCore::GraphicsLayer> m_rootLayer;
+ typedef HashMap<WebLayerID, OwnPtr<WebCore::GraphicsLayer> > LayerMap;
LayerMap m_layers;
- LayerMap m_fixedLayers;
+ typedef HashMap<WebLayerID, WebCore::GraphicsLayer*> LayerRawPtrMap;
+ LayerRawPtrMap m_fixedLayers;
WebLayerID m_rootLayerID;
WebCore::IntPoint m_renderedContentsScrollPosition;
WebCore::IntPoint m_pendingRenderedContentsScrollPosition;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes