Changeset 136181 in webkit
- Timestamp:
- Nov 29, 2012, 4:29:13 PM (14 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 3 edited
-
ChangeLog (modified) (1 diff)
-
UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp (modified) (4 diffs)
-
UIProcess/CoordinatedGraphics/LayerTreeRenderer.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r136178 r136181 1 2012-11-29 Christophe Dumez <christophe.dumez@intel.com> 2 3 [CoordinatedGraphics] Use OwnPtr for LayerMap's layers in LayerTreeRenderer 4 https://bugs.webkit.org/show_bug.cgi?id=103650 5 6 Reviewed by Noam Rosenthal. 7 8 We currently store raw pointers to WebCore::GraphicsLayer in the LayerMap 9 meaning that we need to delete them manually. This patch leverages smart 10 pointers and stores layers as OwnPtr in the LayerMap so that the layers 11 are owned by the HashMap and we don't have to handle memory manually. 12 13 * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp: 14 (WebKit::LayerTreeRenderer::adjustPositionForFixedLayers): 15 (WebKit::LayerTreeRenderer::setLayerChildren): 16 (WebKit::LayerTreeRenderer::deleteLayer): 17 (WebKit::LayerTreeRenderer::ensureLayer): 18 * UIProcess/CoordinatedGraphics/LayerTreeRenderer.h: 19 1 20 2012-11-29 Anders Carlsson <andersca@apple.com> 2 21 -
trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp
r136139 r136181 217 217 FloatSize delta = scrollPosition - renderedScrollPosition; 218 218 219 Layer Map::iterator end = m_fixedLayers.end();220 for (Layer Map::iterator it = m_fixedLayers.begin(); it != end; ++it)219 LayerRawPtrMap::iterator end = m_fixedLayers.end(); 220 for (LayerRawPtrMap::iterator it = m_fixedLayers.begin(); it != end; ++it) 221 221 toTextureMapperLayer(it->value)->setScrollPositionDeltaIfNeeded(delta); 222 222 } … … 274 274 GraphicsLayer* child = layerByID(childID); 275 275 if (!child) { 276 child = createLayer(childID).leakPtr(); 277 m_layers.add(childID, child); 276 OwnPtr<GraphicsLayer*> newChild = createLayer(childID); 277 child = newChild.get(); 278 m_layers.add(childID, newChild.release()); 278 279 } 279 280 children.append(child); … … 363 364 void LayerTreeRenderer::deleteLayer(WebLayerID layerID) 364 365 { 365 GraphicsLayer* layer = layerByID(layerID);366 OwnPtr<GraphicsLayer> layer = m_layers.take(layerID); 366 367 if (!layer) 367 368 return; 368 369 369 370 layer->removeFromParent(); 370 m_layers.remove(layerID);371 371 m_fixedLayers.remove(layerID); 372 372 #if USE(GRAPHICS_SURFACE) 373 373 m_surfaceBackingStores.remove(layerID); 374 374 #endif 375 delete layer;376 375 } 377 376 … … 381 380 LayerMap::iterator it = m_layers.find(id); 382 381 if (it != m_layers.end()) 383 return it->value; 384 385 // We have to leak the new layer's pointer and manage it ourselves, 386 // because OwnPtr is not copyable. 387 WebCore::GraphicsLayer* layer = createLayer(id).leakPtr(); 388 m_layers.add(id, layer); 382 return it->value.get(); 383 384 OwnPtr<WebCore::GraphicsLayer> newLayer = createLayer(id); 385 WebCore::GraphicsLayer* layer = newLayer.get(); 386 m_layers.add(id, newLayer.release()); 389 387 390 388 return layer; -
trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h
r136139 r136181 152 152 void resetBackingStoreSizeToLayerSize(WebCore::GraphicsLayer*); 153 153 154 typedef HashMap<WebLayerID, WebCore::GraphicsLayer*> LayerMap;155 154 WebCore::FloatSize m_contentsSize; 156 155 WebCore::FloatRect m_visibleContentsRect; … … 182 181 OwnPtr<WebCore::GraphicsLayer> m_rootLayer; 183 182 183 typedef HashMap<WebLayerID, OwnPtr<WebCore::GraphicsLayer> > LayerMap; 184 184 LayerMap m_layers; 185 LayerMap m_fixedLayers; 185 typedef HashMap<WebLayerID, WebCore::GraphicsLayer*> LayerRawPtrMap; 186 LayerRawPtrMap m_fixedLayers; 186 187 WebLayerID m_rootLayerID; 187 188 WebCore::IntPoint m_renderedContentsScrollPosition;
Note:
See TracChangeset
for help on using the changeset viewer.