Changeset 107645 in webkit
- Timestamp:
- Feb 13, 2012 5:07:14 PM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r107636 r107645 1 2012-02-13 Adrienne Walker <enne@google.com> 2 3 [chromium] Use HashMap<..., OwnPtr<Tile>> for compositor tilemap 4 https://bugs.webkit.org/show_bug.cgi?id=74154 5 6 Reviewed by James Robinson. 7 8 Covered by the compositing/ layout tests. 9 10 * platform/graphics/chromium/TiledLayerChromium.cpp: 11 (WebCore::UpdatableTile::create): 12 (WebCore::UpdatableTile::UpdatableTile): 13 (WebCore::TiledLayerChromium::createTile): 14 * platform/graphics/chromium/cc/CCLayerTilingData.cpp: 15 (WebCore::CCLayerTilingData::addTile): 16 (WebCore::CCLayerTilingData::takeTile): 17 (WebCore::CCLayerTilingData::tileAt): 18 * platform/graphics/chromium/cc/CCLayerTilingData.h: 19 * platform/graphics/chromium/cc/CCTiledLayerImpl.cpp: 20 (WebCore::DrawableTile::create): 21 (WebCore::DrawableTile::DrawableTile): 22 (WebCore::CCTiledLayerImpl::createTile): 23 1 24 2012-02-13 Kentaro Hara <haraken@chromium.org> 2 25 -
trunk/Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp
r107352 r107645 54 54 WTF_MAKE_NONCOPYABLE(UpdatableTile); 55 55 public: 56 explicit UpdatableTile(PassOwnPtr<LayerTextureUpdater::Texture> texture) 57 : m_partialUpdate(false) 58 , m_texture(texture) 56 static PassOwnPtr<UpdatableTile> create(PassOwnPtr<LayerTextureUpdater::Texture> texture) 59 57 { 58 return adoptPtr(new UpdatableTile(texture)); 60 59 } 61 60 … … 75 74 bool m_partialUpdate; 76 75 private: 76 explicit UpdatableTile(PassOwnPtr<LayerTextureUpdater::Texture> texture) 77 : m_partialUpdate(false) 78 , m_texture(texture) 79 { 80 } 81 77 82 OwnPtr<LayerTextureUpdater::Texture> m_texture; 78 83 }; … … 293 298 UpdatableTile* TiledLayerChromium::createTile(int i, int j) 294 299 { 295 RefPtr<UpdatableTile> tile = adoptRef(new UpdatableTile(textureUpdater()->createTexture(textureManager()))); 296 m_tiler->addTile(tile, i, j); 297 tile->m_dirtyRect = m_tiler->tileRect(tile.get()); 298 299 return tile.get(); 300 OwnPtr<UpdatableTile> tile(UpdatableTile::create(textureUpdater()->createTexture(textureManager()))); 301 UpdatableTile* addedTile = tile.get(); 302 m_tiler->addTile(tile.release(), i, j); 303 304 addedTile->m_dirtyRect = m_tiler->tileRect(addedTile); 305 return addedTile; 300 306 } 301 307 -
trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTilingData.cpp
r106870 r107645 75 75 } 76 76 77 void CCLayerTilingData::addTile(Pass RefPtr<Tile> tile, int i, int j)77 void CCLayerTilingData::addTile(PassOwnPtr<Tile> tile, int i, int j) 78 78 { 79 79 ASSERT(!tileAt(i, j)); … … 82 82 } 83 83 84 Pass RefPtr<CCLayerTilingData::Tile> CCLayerTilingData::takeTile(int i, int j)84 PassOwnPtr<CCLayerTilingData::Tile> CCLayerTilingData::takeTile(int i, int j) 85 85 { 86 86 return m_tiles.take(make_pair(i, j)); … … 89 89 CCLayerTilingData::Tile* CCLayerTilingData::tileAt(int i, int j) const 90 90 { 91 Tile* tile = m_tiles.get(make_pair(i, j)).get(); 92 ASSERT(!tile || tile->refCount() == 1); 93 return tile; 91 return m_tiles.get(make_pair(i, j)); 94 92 } 95 93 -
trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTilingData.h
r103972 r107645 35 35 #include <wtf/HashTraits.h> 36 36 #include <wtf/PassOwnPtr.h> 37 #include <wtf/RefCounted.h>38 37 39 38 namespace WebCore { … … 62 61 const CCLayerTilingData& operator=(const CCLayerTilingData&); 63 62 64 class Tile : public RefCounted<Tile>{63 class Tile { 65 64 WTF_MAKE_NONCOPYABLE(Tile); 66 65 public: … … 85 84 static bool isDeletedValue(TileMapKey value) { return value.first == -2 && value.second == -2; } 86 85 }; 87 // FIXME: The mapped value in TileMap should really be an OwnPtr, as the 88 // refcount of a Tile should never be more than 1. However, HashMap 89 // doesn't easily support OwnPtr as a value. 90 typedef HashMap<TileMapKey, RefPtr<Tile>, DefaultHash<TileMapKey>::Hash, TileMapKeyTraits> TileMap; 86 typedef HashMap<TileMapKey, OwnPtr<Tile>, DefaultHash<TileMapKey>::Hash, TileMapKeyTraits> TileMap; 91 87 92 void addTile(Pass RefPtr<Tile>, int, int);93 Pass RefPtr<Tile> takeTile(int, int);88 void addTile(PassOwnPtr<Tile>, int, int); 89 PassOwnPtr<Tile> takeTile(int, int); 94 90 Tile* tileAt(int, int) const; 95 91 const TileMap& tiles() const { return m_tiles; } -
trunk/Source/WebCore/platform/graphics/chromium/cc/CCTiledLayerImpl.cpp
r106300 r107645 48 48 WTF_MAKE_NONCOPYABLE(DrawableTile); 49 49 public: 50 DrawableTile() : m_textureId(0) {}50 static PassOwnPtr<DrawableTile> create() { return adoptPtr(new DrawableTile()); } 51 51 52 52 Platform3DObject textureId() const { return m_textureId; } … … 57 57 58 58 private: 59 DrawableTile() : m_textureId(0) { } 60 59 61 Platform3DObject m_textureId; 60 62 IntRect m_opaqueRect; … … 104 106 DrawableTile* CCTiledLayerImpl::createTile(int i, int j) 105 107 { 106 RefPtr<DrawableTile> tile = adoptRef(new DrawableTile()); 107 m_tiler->addTile(tile, i, j); 108 return tile.get(); 108 OwnPtr<DrawableTile> tile(DrawableTile::create()); 109 DrawableTile* addedTile = tile.get(); 110 m_tiler->addTile(tile.release(), i, j); 111 return addedTile; 109 112 } 110 113
Note: See TracChangeset
for help on using the changeset viewer.