diff options
Diffstat (limited to 'cc/resources/tile_manager.cc')
-rw-r--r-- | cc/resources/tile_manager.cc | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/cc/resources/tile_manager.cc b/cc/resources/tile_manager.cc index d83b824..66f95da 100644 --- a/cc/resources/tile_manager.cc +++ b/cc/resources/tile_manager.cc @@ -239,9 +239,11 @@ TileManager::TileManager( task_runner_.get(), base::Bind(&TileManager::CheckIfReadyToActivate, base::Unretained(this))), - ready_to_draw_check_notifier_(task_runner_.get(), - base::Bind(&TileManager::CheckIfReadyToDraw, - base::Unretained(this))) { + ready_to_draw_check_notifier_( + task_runner_.get(), + base::Bind(&TileManager::CheckIfReadyToDraw, base::Unretained(this))), + did_notify_ready_to_activate_(false), + did_notify_ready_to_draw_(false) { rasterizer_->SetClient(this); } @@ -416,9 +418,12 @@ void TileManager::ManageTiles(const GlobalStateThatImpactsTilePriority& state) { TileVector tiles_that_need_to_be_rasterized; AssignGpuMemoryToTiles(&tiles_that_need_to_be_rasterized); - // Finally, schedule rasterizer tasks. + // Schedule rasterizer tasks. ScheduleTasks(tiles_that_need_to_be_rasterized); + did_notify_ready_to_activate_ = false; + did_notify_ready_to_draw_ = false; + TRACE_EVENT_INSTANT1("cc", "DidManage", TRACE_EVENT_SCOPE_THREAD, @@ -882,8 +887,13 @@ void TileManager::CheckIfReadyToActivate() { rasterizer_->CheckForCompletedTasks(); did_check_for_completed_tasks_since_last_schedule_tasks_ = true; - if (IsReadyToActivate()) - client_->NotifyReadyToActivate(); + if (did_notify_ready_to_activate_) + return; + if (!IsReadyToActivate()) + return; + + client_->NotifyReadyToActivate(); + did_notify_ready_to_activate_ = true; } void TileManager::CheckIfReadyToDraw() { @@ -892,8 +902,13 @@ void TileManager::CheckIfReadyToDraw() { rasterizer_->CheckForCompletedTasks(); did_check_for_completed_tasks_since_last_schedule_tasks_ = true; - if (IsReadyToDraw()) - client_->NotifyReadyToDraw(); + if (did_notify_ready_to_draw_) + return; + if (!IsReadyToDraw()) + return; + + client_->NotifyReadyToDraw(); + did_notify_ready_to_draw_ = true; } TileManager::MemoryUsage::MemoryUsage() : memory_bytes_(0), resource_count_(0) { |