Index: cc/resources/tile_manager.cc |
diff --git a/cc/resources/tile_manager.cc b/cc/resources/tile_manager.cc |
index d83b8243682e717fd3cf33b585742eff0c9d5472..66f95da9444cc36054c916c780088473282fdb52 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) { |