Index: cc/resources/tile_manager.cc |
diff --git a/cc/resources/tile_manager.cc b/cc/resources/tile_manager.cc |
index 81ae8b5c9ee656486454580dacd4e726a8c1a9c7..cfdad9ce976598b476e5346c2e692ca137f6262c 100644 |
--- a/cc/resources/tile_manager.cc |
+++ b/cc/resources/tile_manager.cc |
@@ -360,11 +360,11 @@ void TileManager::PrepareTiles( |
CleanUpReleasedTiles(); |
TileVector tiles_that_need_to_be_rasterized; |
- RasterTilePriorityQueue raster_priority_queue; |
- client_->BuildRasterQueue(&raster_priority_queue, |
- global_state_.tree_priority, |
- RasterTilePriorityQueue::Type::ALL); |
- AssignGpuMemoryToTiles(&raster_priority_queue, scheduled_raster_task_limit_, |
+ scoped_ptr<RasterTilePriorityQueue> raster_priority_queue( |
+ client_->BuildRasterQueue(global_state_.tree_priority, |
+ RasterTilePriorityQueue::Type::ALL)); |
+ AssignGpuMemoryToTiles(raster_priority_queue.get(), |
+ scheduled_raster_task_limit_, |
&tiles_that_need_to_be_rasterized); |
// Schedule tile tasks. |
@@ -411,12 +411,12 @@ void TileManager::SynchronouslyRasterizeTiles( |
FreeResourcesForReleasedTiles(); |
CleanUpReleasedTiles(); |
- RasterTilePriorityQueue required_for_draw_queue; |
- client_->BuildRasterQueue(&required_for_draw_queue, |
- global_state_.tree_priority, |
- RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); |
+ scoped_ptr<RasterTilePriorityQueue> required_for_draw_queue( |
+ client_->BuildRasterQueue( |
+ global_state_.tree_priority, |
+ RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW)); |
TileVector tiles_that_need_to_be_rasterized; |
- AssignGpuMemoryToTiles(&required_for_draw_queue, |
+ AssignGpuMemoryToTiles(required_for_draw_queue.get(), |
std::numeric_limits<size_t>::max(), |
&tiles_that_need_to_be_rasterized); |
@@ -433,15 +433,14 @@ void TileManager::SynchronouslyRasterizeTiles( |
// assigned memory after reaching a steady memory state. |
// TODO(hendrikw): Figure out why this would improve jank on some tests - See |
// crbug.com/449288 |
- required_for_draw_queue.Reset(); |
- client_->BuildRasterQueue(&required_for_draw_queue, |
- global_state_.tree_priority, |
- RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); |
+ required_for_draw_queue = client_->BuildRasterQueue( |
+ global_state_.tree_priority, |
+ RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); |
// Use on-demand raster for any tiles that have not been been assigned |
// memory. This ensures that we draw even when OOM. |
- for (; !required_for_draw_queue.IsEmpty(); required_for_draw_queue.Pop()) { |
- Tile* tile = required_for_draw_queue.Top(); |
+ for (; !required_for_draw_queue->IsEmpty(); required_for_draw_queue->Pop()) { |
+ Tile* tile = required_for_draw_queue->Top(); |
tile->draw_info().set_rasterize_on_demand(); |
client_->NotifyTileStateChanged(tile); |
} |
@@ -944,10 +943,11 @@ void TileManager::CheckIfMoreTilesNeedToBePrepared() { |
// When OOM, keep re-assigning memory until we reach a steady state |
// where top-priority tiles are initialized. |
TileVector tiles_that_need_to_be_rasterized; |
- RasterTilePriorityQueue raster_priority_queue; |
- client_->BuildRasterQueue(&raster_priority_queue, global_state_.tree_priority, |
- RasterTilePriorityQueue::Type::ALL); |
- AssignGpuMemoryToTiles(&raster_priority_queue, scheduled_raster_task_limit_, |
+ scoped_ptr<RasterTilePriorityQueue> raster_priority_queue( |
+ client_->BuildRasterQueue(global_state_.tree_priority, |
+ RasterTilePriorityQueue::Type::ALL)); |
+ AssignGpuMemoryToTiles(raster_priority_queue.get(), |
+ scheduled_raster_task_limit_, |
&tiles_that_need_to_be_rasterized); |
// |tiles_that_need_to_be_rasterized| will be empty when we reach a |
@@ -977,20 +977,20 @@ void TileManager::CheckIfMoreTilesNeedToBePrepared() { |
// we used for AssignGpuMemoryToTiles, since the AssignGpuMemoryToTiles call |
// could have evicted some tiles that would not be picked up by the old raster |
// queue. |
- RasterTilePriorityQueue required_for_activation_queue; |
- client_->BuildRasterQueue( |
- &required_for_activation_queue, global_state_.tree_priority, |
- RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); |
+ scoped_ptr<RasterTilePriorityQueue> required_for_activation_queue( |
+ client_->BuildRasterQueue( |
+ global_state_.tree_priority, |
+ RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION)); |
// If we have tiles to mark as rasterize on demand, but we don't allow |
// rasterize on demand, then skip activation and return early. |
- if (!required_for_activation_queue.IsEmpty() && !allow_rasterize_on_demand) |
+ if (!required_for_activation_queue->IsEmpty() && !allow_rasterize_on_demand) |
return; |
// Mark required tiles as rasterize on demand. |
- for (; !required_for_activation_queue.IsEmpty(); |
- required_for_activation_queue.Pop()) { |
- Tile* tile = required_for_activation_queue.Top(); |
+ for (; !required_for_activation_queue->IsEmpty(); |
+ required_for_activation_queue->Pop()) { |
+ Tile* tile = required_for_activation_queue->Top(); |
tile->draw_info().set_rasterize_on_demand(); |
client_->NotifyTileStateChanged(tile); |
} |