| Index: cc/picture_layer_tiling.cc
|
| diff --git a/cc/picture_layer_tiling.cc b/cc/picture_layer_tiling.cc
|
| index 95be306169e327fa4b7f8685d86fc3c0fc979e18..bb1222ed52bb47224b9d9518a13059374d3ee6be 100644
|
| --- a/cc/picture_layer_tiling.cc
|
| +++ b/cc/picture_layer_tiling.cc
|
| @@ -50,7 +50,7 @@ Tile* PictureLayerTiling::TileAt(int i, int j) const {
|
| TileMap::const_iterator iter = tiles_.find(TileMapKey(i, j));
|
| if (iter == tiles_.end())
|
| return NULL;
|
| - return iter->second.get();
|
| + return iter->second.tile();
|
| }
|
|
|
| void PictureLayerTiling::CreateTile(int i, int j) {
|
| @@ -60,7 +60,7 @@ void PictureLayerTiling::CreateTile(int i, int j) {
|
| DCHECK(tiles_.find(key) == tiles_.end());
|
| scoped_refptr<Tile> tile = client_->CreateTile(this, tile_rect);
|
| if (tile)
|
| - tiles_[key] = tile;
|
| + tiles_.insert(make_pair(key, TileHandle(tile)));
|
| }
|
|
|
| Region PictureLayerTiling::OpaqueRegionInContentRect(
|
| @@ -414,7 +414,8 @@ void PictureLayerTiling::UpdateTilePriorities(
|
|
|
| TilePriority priority;
|
| DCHECK(!priority.is_live);
|
| - Tile* tile = find->second.get();
|
| + TileHandle* tile_handle = &find->second;
|
| + Tile* tile = tile_handle->tile();
|
| tile->set_priority(tree, priority);
|
| }
|
| last_prioritized_rect_ = inflated_rect;
|
| @@ -439,7 +440,8 @@ void PictureLayerTiling::UpdateTilePriorities(
|
| TileMap::iterator find = tiles_.find(iter.index());
|
| if (find == tiles_.end())
|
| continue;
|
| - Tile* tile = find->second.get();
|
| + TileHandle* tile_handle = &find->second;
|
| + Tile* tile = tile_handle->tile();
|
|
|
| gfx::Rect tile_bounds =
|
| tiling_data_.TileBounds(iter.index_x(), iter.index_y());
|
| @@ -472,7 +474,8 @@ void PictureLayerTiling::UpdateTilePriorities(
|
| TileMap::iterator find = tiles_.find(iter.index());
|
| if (find == tiles_.end())
|
| continue;
|
| - Tile* tile = find->second.get();
|
| + TileHandle* tile_handle = &find->second;
|
| + Tile* tile = tile_handle->tile();
|
|
|
| gfx::Rect tile_bounds =
|
| tiling_data_.TileBounds(iter.index_x(), iter.index_y());
|
| @@ -517,8 +520,9 @@ void PictureLayerTiling::UpdateTilePriorities(
|
|
|
| void PictureLayerTiling::DidBecomeActive() {
|
| for (TileMap::const_iterator it = tiles_.begin(); it != tiles_.end(); ++it) {
|
| - it->second->set_priority(ACTIVE_TREE, it->second->priority(PENDING_TREE));
|
| - it->second->set_priority(PENDING_TREE, TilePriority());
|
| + Tile* tile = it->second.tile();
|
| + tile->set_priority(ACTIVE_TREE, tile->priority(PENDING_TREE));
|
| + tile->set_priority(PENDING_TREE, TilePriority());
|
|
|
| // Tile holds a ref onto a picture pile. If the tile never gets invalidated
|
| // and recreated, then that picture pile ref could exist indefinitely. To
|
| @@ -526,7 +530,7 @@ void PictureLayerTiling::DidBecomeActive() {
|
| // will cause PicturePileImpls and their clones to get deleted once the
|
| // corresponding PictureLayerImpl and any in flight raster jobs go out of
|
| // scope.
|
| - client_->UpdatePile(it->second);
|
| + client_->UpdatePile(tile);
|
| }
|
| }
|
|
|
| @@ -539,4 +543,12 @@ scoped_ptr<base::Value> PictureLayerTiling::AsValue() const {
|
| return state.PassAs<base::Value>();
|
| }
|
|
|
| +TileHandle::TileHandle(scoped_refptr<Tile> tile)
|
| + : tile_(tile),
|
| + managed_tile_state_(tile_->tile_manager()->RegisterTile(tile_)) {
|
| +}
|
| +
|
| +TileHandle::~TileHandle() {
|
| +}
|
| +
|
| } // namespace cc
|
|
|