Chromium Code Reviews| Index: cc/resources/tile_manager.cc |
| diff --git a/cc/resources/tile_manager.cc b/cc/resources/tile_manager.cc |
| index 53068c6ffc294139121556ceaf1594eaf412567a..592ce49b01b3167774adcaabd0390a4ad427fe58 100644 |
| --- a/cc/resources/tile_manager.cc |
| +++ b/cc/resources/tile_manager.cc |
| @@ -271,12 +271,8 @@ TaskSetCollection TileManager::TasksThatShouldBeForcedToComplete() const { |
| } |
| void TileManager::FreeResourcesForReleasedTiles() { |
| - for (std::vector<Tile*>::iterator it = released_tiles_.begin(); |
| - it != released_tiles_.end(); |
| - ++it) { |
| - Tile* tile = *it; |
| + for (auto tile : released_tiles_) |
|
vmpstr
2015/05/08 18:11:06
nit: auto*
hendrikw
2015/05/08 19:21:02
Ugh, done.
|
| FreeResourcesForTile(tile); |
| - } |
| } |
| void TileManager::CleanUpReleasedTiles() { |
| @@ -348,7 +344,7 @@ void TileManager::PrepareTiles( |
| FreeResourcesForReleasedTiles(); |
| CleanUpReleasedTiles(); |
| - TileVector tiles_that_need_to_be_rasterized; |
| + PrioritizedTileVector tiles_that_need_to_be_rasterized; |
| scoped_ptr<RasterTilePriorityQueue> raster_priority_queue( |
| client_->BuildRasterQueue(global_state_.tree_priority, |
| RasterTilePriorityQueue::Type::ALL)); |
| @@ -360,7 +356,7 @@ void TileManager::PrepareTiles( |
| // tile that will be rasterized is required for draw. |
| client_->SetIsLikelyToRequireADraw( |
| !tiles_that_need_to_be_rasterized.empty() && |
| - (*tiles_that_need_to_be_rasterized.begin())->required_for_draw()); |
| + tiles_that_need_to_be_rasterized.front().tile()->required_for_draw()); |
| // Schedule tile tasks. |
| ScheduleTasks(tiles_that_need_to_be_rasterized); |
| @@ -423,7 +419,7 @@ TileManager::FreeTileResourcesUntilUsageIsWithinLimit( |
| if (eviction_priority_queue->IsEmpty()) |
| break; |
| - Tile* tile = eviction_priority_queue->Top(); |
| + Tile* tile = eviction_priority_queue->Top().tile(); |
| *usage -= MemoryUsage::FromTile(tile); |
| FreeResourcesForTileAndNotifyClientIfTileWasReadyToDraw(tile); |
| eviction_priority_queue->Pop(); |
| @@ -445,10 +441,11 @@ TileManager::FreeTileResourcesWithLowerPriorityUntilUsageIsWithinLimit( |
| if (eviction_priority_queue->IsEmpty()) |
| break; |
| - Tile* tile = eviction_priority_queue->Top(); |
| - if (!other_priority.IsHigherPriorityThan(tile->priority())) |
| + const PrioritizedTile& prioritized_tile = eviction_priority_queue->Top(); |
| + if (!other_priority.IsHigherPriorityThan(prioritized_tile.priority())) |
| break; |
| + Tile* tile = prioritized_tile.tile(); |
| *usage -= MemoryUsage::FromTile(tile); |
| FreeResourcesForTileAndNotifyClientIfTileWasReadyToDraw(tile); |
| eviction_priority_queue->Pop(); |
| @@ -476,7 +473,7 @@ bool TileManager::TilePriorityViolatesMemoryPolicy( |
| void TileManager::AssignGpuMemoryToTiles( |
| RasterTilePriorityQueue* raster_priority_queue, |
| size_t scheduled_raster_task_limit, |
| - TileVector* tiles_that_need_to_be_rasterized) { |
| + PrioritizedTileVector* tiles_that_need_to_be_rasterized) { |
| TRACE_EVENT_BEGIN0("cc", "TileManager::AssignGpuMemoryToTiles"); |
| // Maintain the list of released resources that can potentially be re-used |
| @@ -500,8 +497,9 @@ void TileManager::AssignGpuMemoryToTiles( |
| scoped_ptr<EvictionTilePriorityQueue> eviction_priority_queue; |
| for (; !raster_priority_queue->IsEmpty(); raster_priority_queue->Pop()) { |
| - Tile* tile = raster_priority_queue->Top(); |
| - TilePriority priority = tile->priority(); |
| + const PrioritizedTile& prioritized_tile = raster_priority_queue->Top(); |
| + Tile* tile = prioritized_tile.tile(); |
| + TilePriority priority = prioritized_tile.priority(); |
| if (TilePriorityViolatesMemoryPolicy(priority)) { |
| TRACE_EVENT_INSTANT0( |
| @@ -517,7 +515,7 @@ void TileManager::AssignGpuMemoryToTiles( |
| break; |
| } |
| - TileDrawInfo& draw_info = tile->draw_info(); |
| + const TileDrawInfo& draw_info = tile->draw_info(); |
|
vmpstr
2015/05/08 18:11:06
Since this is only used in the dcheck below, can y
hendrikw
2015/05/08 19:21:02
Done.
|
| tile->scheduled_priority_ = schedule_priority++; |
| DCHECK_IMPLIES(draw_info.mode() != TileDrawInfo::OOM_MODE, |
| @@ -559,7 +557,7 @@ void TileManager::AssignGpuMemoryToTiles( |
| } |
| memory_usage += memory_required_by_tile_to_be_scheduled; |
| - tiles_that_need_to_be_rasterized->push_back(tile); |
| + tiles_that_need_to_be_rasterized->push_back(prioritized_tile); |
| } |
| // Note that we should try and further reduce memory in case the above loop |
| @@ -600,7 +598,7 @@ void TileManager::FreeResourcesForTileAndNotifyClientIfTileWasReadyToDraw( |
| } |
| void TileManager::ScheduleTasks( |
| - const TileVector& tiles_that_need_to_be_rasterized) { |
| + const PrioritizedTileVector& tiles_that_need_to_be_rasterized) { |
| TRACE_EVENT1("cc", |
| "TileManager::ScheduleTasks", |
| "count", |
| @@ -612,17 +610,15 @@ void TileManager::ScheduleTasks( |
| // Build a new task queue containing all task currently needed. Tasks |
| // are added in order of priority, highest priority task first. |
| - for (TileVector::const_iterator it = tiles_that_need_to_be_rasterized.begin(); |
| - it != tiles_that_need_to_be_rasterized.end(); |
| - ++it) { |
| - Tile* tile = *it; |
| - TileDrawInfo& draw_info = tile->draw_info(); |
| + for (auto& prioritized_tile : tiles_that_need_to_be_rasterized) { |
| + Tile* tile = prioritized_tile.tile(); |
| + const TileDrawInfo& draw_info = tile->draw_info(); |
| DCHECK(draw_info.requires_resource()); |
| DCHECK(!draw_info.resource_); |
| if (!tile->raster_task_.get()) |
| - tile->raster_task_ = CreateRasterTask(tile); |
| + tile->raster_task_ = CreateRasterTask(prioritized_tile); |
| TaskSetCollection task_sets; |
| if (tile->required_for_activation()) |
| @@ -662,7 +658,9 @@ scoped_refptr<ImageDecodeTask> TileManager::CreateImageDecodeTask( |
| base::Unretained(pixel_ref)))); |
| } |
| -scoped_refptr<RasterTask> TileManager::CreateRasterTask(Tile* tile) { |
| +scoped_refptr<RasterTask> TileManager::CreateRasterTask( |
| + const PrioritizedTile& prioritized_tile) { |
| + Tile* tile = prioritized_tile.tile(); |
| scoped_ptr<ScopedResource> resource = |
| resource_pool_->AcquireResource(tile->desired_texture_size(), |
| tile_task_runner_->GetResourceFormat()); |
| @@ -693,9 +691,9 @@ scoped_refptr<RasterTask> TileManager::CreateRasterTask(Tile* tile) { |
| return make_scoped_refptr(new RasterTaskImpl( |
| const_resource, tile->raster_source(), tile->content_rect(), |
| - tile->contents_scale(), tile->priority().resolution, tile->layer_id(), |
| - static_cast<const void*>(tile), tile->source_frame_number(), |
| - tile->use_picture_analysis(), |
| + tile->contents_scale(), prioritized_tile.priority().resolution, |
| + tile->layer_id(), static_cast<const void*>(tile), |
| + tile->source_frame_number(), tile->use_picture_analysis(), |
| base::Bind(&TileManager::OnRasterTaskCompleted, base::Unretained(this), |
| tile->id(), base::Passed(&resource)), |
| &decode_tasks)); |
| @@ -797,7 +795,7 @@ bool TileManager::AreRequiredTilesReadyToDraw( |
| // have to iterate the queue to check whether the required tiles are ready to |
| // draw. |
| for (; !raster_priority_queue->IsEmpty(); raster_priority_queue->Pop()) { |
| - if (!raster_priority_queue->Top()->IsReadyToDraw()) |
| + if (!raster_priority_queue->Top().tile()->IsReadyToDraw()) |
| return false; |
| } |
| @@ -805,7 +803,7 @@ bool TileManager::AreRequiredTilesReadyToDraw( |
| scoped_ptr<RasterTilePriorityQueue> all_queue( |
| client_->BuildRasterQueue(global_state_.tree_priority, type)); |
| for (; !all_queue->IsEmpty(); all_queue->Pop()) { |
| - auto* tile = all_queue->Top(); |
| + Tile* tile = all_queue->Top().tile(); |
| DCHECK_IMPLIES(tile->required_for_activation(), tile->IsReadyToDraw()); |
| } |
| #endif |
| @@ -873,7 +871,7 @@ 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; |
| + PrioritizedTileVector tiles_that_need_to_be_rasterized; |
| scoped_ptr<RasterTilePriorityQueue> raster_priority_queue( |
| client_->BuildRasterQueue(global_state_.tree_priority, |
| RasterTilePriorityQueue::Type::ALL)); |
| @@ -885,7 +883,7 @@ void TileManager::CheckIfMoreTilesNeedToBePrepared() { |
| // tile that will be rasterized is required for draw. |
| client_->SetIsLikelyToRequireADraw( |
| !tiles_that_need_to_be_rasterized.empty() && |
| - (*tiles_that_need_to_be_rasterized.begin())->required_for_draw()); |
| + tiles_that_need_to_be_rasterized.front().tile()->required_for_draw()); |
| // |tiles_that_need_to_be_rasterized| will be empty when we reach a |
| // steady memory state. Keep scheduling tasks until we reach this state. |
| @@ -926,7 +924,7 @@ void TileManager::CheckIfMoreTilesNeedToBePrepared() { |
| // Mark required tiles as OOM so that we can activate without them. |
| for (; !required_for_activation_queue->IsEmpty(); |
| required_for_activation_queue->Pop()) { |
| - Tile* tile = required_for_activation_queue->Top(); |
| + Tile* tile = required_for_activation_queue->Top().tile(); |
| tile->draw_info().set_oom(); |
| client_->NotifyTileStateChanged(tile); |
| } |