Index: cc/picture_layer_tiling.cc |
diff --git a/cc/picture_layer_tiling.cc b/cc/picture_layer_tiling.cc |
index ca357a10b6d51dae26ed0b085fb604e148046051..5dd2dfef0099d9b51829b8b52522638a87881491 100644 |
--- a/cc/picture_layer_tiling.cc |
+++ b/cc/picture_layer_tiling.cc |
@@ -417,6 +417,7 @@ void PictureLayerTiling::UpdateTilePriorities( |
TileHandle* tile_handle = &find->second; |
Tile* tile = tile_handle->tile(); |
tile->set_priority(tree, priority); |
+ tile_handle->UnregisterFromTileManager(); |
} |
last_prioritized_rect_ = inflated_rect; |
@@ -442,6 +443,7 @@ void PictureLayerTiling::UpdateTilePriorities( |
continue; |
TileHandle* tile_handle = &find->second; |
Tile* tile = tile_handle->tile(); |
+ tile_handle->RegisterWithTileManager(); |
gfx::Rect tile_bounds = |
tiling_data_.TileBounds(iter.index_x(), iter.index_y()); |
@@ -476,6 +478,7 @@ void PictureLayerTiling::UpdateTilePriorities( |
continue; |
TileHandle* tile_handle = &find->second; |
Tile* tile = tile_handle->tile(); |
+ tile_handle->RegisterWithTileManager(); |
gfx::Rect tile_bounds = |
tiling_data_.TileBounds(iter.index_x(), iter.index_y()); |
@@ -543,9 +546,17 @@ 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(scoped_refptr<Tile> tile) : tile_(tile) { |
+} |
+ |
+void TileHandle::RegisterWithTileManager() { |
+ if (managed_tile_state_.get()) |
+ return; |
+ managed_tile_state_ = tile_->tile_manager()->RegisterTile(tile_); |
+} |
+ |
+void TileHandle::UnregisterFromTileManager() { |
+ managed_tile_state_ = NULL; |
} |
} // namespace cc |