Index: cc/scheduler/scheduler.cc |
diff --git a/cc/scheduler/scheduler.cc b/cc/scheduler/scheduler.cc |
index 657871d810c57dc3b32f6bb847b736fb644324c5..cd0d37ea2a81c32d1d37d6698b3cf04c296d6e47 100644 |
--- a/cc/scheduler/scheduler.cc |
+++ b/cc/scheduler/scheduler.cc |
@@ -131,6 +131,7 @@ void Scheduler::SetCanStart() { |
void Scheduler::SetVisible(bool visible) { |
state_machine_.SetVisible(visible); |
+ UpdateCompositorTimingHistoryRecordingEnabled(); |
ProcessScheduledActions(); |
} |
@@ -140,6 +141,7 @@ void Scheduler::SetCanDraw(bool can_draw) { |
} |
void Scheduler::NotifyReadyToActivate() { |
+ compositor_timing_history_->ReadyToActivate(); |
state_machine_.NotifyReadyToActivate(); |
ProcessScheduledActions(); |
} |
@@ -217,14 +219,24 @@ void Scheduler::NotifyReadyToCommit() { |
ProcessScheduledActions(); |
} |
+void Scheduler::DidCommit() { |
+ compositor_timing_history_->DidCommit(); |
+} |
+ |
void Scheduler::BeginMainFrameAborted(CommitEarlyOutReason reason) { |
TRACE_EVENT1("cc", "Scheduler::BeginMainFrameAborted", "reason", |
CommitEarlyOutReasonToString(reason)); |
+ compositor_timing_history_->BeginMainFrameAborted(); |
state_machine_.BeginMainFrameAborted(reason); |
ProcessScheduledActions(); |
} |
+void Scheduler::WillPrepareTiles() { |
+ compositor_timing_history_->WillPrepareTiles(); |
+} |
+ |
void Scheduler::DidPrepareTiles() { |
+ compositor_timing_history_->DidPrepareTiles(); |
state_machine_.DidPrepareTiles(); |
} |
@@ -233,6 +245,7 @@ void Scheduler::DidLoseOutputSurface() { |
begin_retro_frame_args_.clear(); |
begin_retro_frame_task_.Cancel(); |
state_machine_.DidLoseOutputSurface(); |
+ UpdateCompositorTimingHistoryRecordingEnabled(); |
ProcessScheduledActions(); |
} |
@@ -241,6 +254,7 @@ void Scheduler::DidCreateAndInitializeOutputSurface() { |
DCHECK(!frame_source_->NeedsBeginFrames()); |
DCHECK(begin_impl_frame_deadline_task_.IsCancelled()); |
state_machine_.DidCreateAndInitializeOutputSurface(); |
+ UpdateCompositorTimingHistoryRecordingEnabled(); |
ProcessScheduledActions(); |
} |
@@ -579,16 +593,16 @@ void Scheduler::OnBeginImplFrameDeadline() { |
} |
void Scheduler::DrawAndSwapIfPossible() { |
- compositor_timing_history_->DidStartDrawing(); |
+ compositor_timing_history_->WillDraw(); |
DrawResult result = client_->ScheduledActionDrawAndSwapIfPossible(); |
state_machine_.DidDrawIfPossibleCompleted(result); |
- compositor_timing_history_->DidFinishDrawing(); |
+ compositor_timing_history_->DidDraw(); |
} |
void Scheduler::DrawAndSwapForced() { |
- compositor_timing_history_->DidStartDrawing(); |
+ compositor_timing_history_->WillDraw(); |
client_->ScheduledActionDrawAndSwapForced(); |
- compositor_timing_history_->DidFinishDrawing(); |
+ compositor_timing_history_->DidDraw(); |
} |
void Scheduler::SetDeferCommits(bool defer_commits) { |
@@ -634,12 +648,12 @@ void Scheduler::ProcessScheduledActions() { |
FROM_HERE_WITH_EXPLICIT_FUNCTION( |
"461509 Scheduler::ProcessScheduledActions4")); |
client_->ScheduledActionCommit(); |
- compositor_timing_history_->DidCommit(); |
break; |
} |
case SchedulerStateMachine::ACTION_ACTIVATE_SYNC_TREE: |
+ compositor_timing_history_->WillActivate(); |
client_->ScheduledActionActivateSyncTree(); |
- compositor_timing_history_->DidActivateSyncTree(); |
+ compositor_timing_history_->DidActivate(); |
break; |
case SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE: { |
// TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is |
@@ -721,6 +735,11 @@ void Scheduler::AsValueInto(base::trace_event::TracedValue* state) const { |
state->EndDictionary(); |
} |
+void Scheduler::UpdateCompositorTimingHistoryRecordingEnabled() { |
+ compositor_timing_history_->SetRecordingEnabled( |
+ state_machine_.HasInitializedOutputSurface() && state_machine_.visible()); |
+} |
+ |
bool Scheduler::CanCommitAndActivateBeforeDeadline() const { |
BeginFrameArgs args = |
begin_impl_frame_tracker_.DangerousMethodCurrentOrLast(); |
@@ -730,7 +749,8 @@ bool Scheduler::CanCommitAndActivateBeforeDeadline() const { |
base::TimeTicks estimated_draw_time = |
args.frame_time + |
compositor_timing_history_->BeginMainFrameToCommitDurationEstimate() + |
- compositor_timing_history_->CommitToActivateDurationEstimate(); |
+ compositor_timing_history_->CommitToReadyToActivateDurationEstimate() + |
+ compositor_timing_history_->ActivateDurationEstimate(); |
TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler"), |
"CanCommitAndActivateBeforeDeadline", |