Chromium Code Reviews| Index: cc/scheduler/scheduler.cc |
| diff --git a/cc/scheduler/scheduler.cc b/cc/scheduler/scheduler.cc |
| index d532ce3b07d7478d7eea238f0df43884f7d299e5..d61219d68924e3274270c1f4f834564e744a6d92 100644 |
| --- a/cc/scheduler/scheduler.cc |
| +++ b/cc/scheduler/scheduler.cc |
| @@ -89,9 +89,17 @@ void Scheduler::SetCanDraw(bool can_draw) { |
| ProcessScheduledActions(); |
| } |
| -void Scheduler::NotifyReadyToActivate() { |
| +void Scheduler::NotifyReadyToActivate(int source_frame_number) { |
| compositor_timing_history_->ReadyToActivate(); |
| state_machine_.NotifyReadyToActivate(); |
| + if (source_frame_number != -1) { |
| + if (ready_to_activate_time_.empty() || |
| + ready_to_activate_time_.back().first != (unsigned)source_frame_number) { |
|
brianderson
2017/04/17 23:28:50
static_cast, then lgtm.
panicker
2017/04/17 23:32:19
Done.
|
| + // Note the activate source-frame and timestamp |
| + ready_to_activate_time_.emplace_back(source_frame_number, |
| + base::TimeTicks::Now()); |
| + } |
| + } |
| ProcessScheduledActions(); |
| } |
| @@ -608,7 +616,6 @@ void Scheduler::ProcessScheduledActions() { |
| // The top-level call will iteratively execute the next action for us anyway. |
| if (inside_process_scheduled_actions_) |
| return; |
| - |
| base::AutoReset<bool> mark_inside(&inside_process_scheduled_actions_, true); |
| SchedulerStateMachine::Action action; |
| @@ -627,6 +634,9 @@ void Scheduler::ProcessScheduledActions() { |
| begin_main_frame_args_.frame_time); |
| state_machine_.WillSendBeginMainFrame(); |
| // TODO(brianderson): Pass begin_main_frame_args_ directly to client. |
| + begin_main_frame_args_.ready_to_activate_time = |
| + std::move(ready_to_activate_time_); |
| + ready_to_activate_time_.clear(); |
| client_->ScheduledActionSendBeginMainFrame(begin_main_frame_args_); |
| break; |
| case SchedulerStateMachine::ACTION_COMMIT: { |