| Index: components/scheduler/renderer/idle_time_estimator.cc
|
| diff --git a/components/scheduler/renderer/idle_time_estimator.cc b/components/scheduler/renderer/idle_time_estimator.cc
|
| index 5d572a2831776854a41a2e03cf1ac1fbb2f83943..52e72da2eba36a009b958afba2ea72cc3f80893c 100644
|
| --- a/components/scheduler/renderer/idle_time_estimator.cc
|
| +++ b/components/scheduler/renderer/idle_time_estimator.cc
|
| @@ -36,7 +36,8 @@ base::TimeDelta IdleTimeEstimator::GetExpectedIdleDuration(
|
| void IdleTimeEstimator::DidCommitFrameToCompositor() {
|
| // This will run inside of a WillProcessTask / DidProcessTask pair, let
|
| // DidProcessTask know a frame was comitted.
|
| - did_commit_ = true;
|
| + if (nesting_level_ == 1)
|
| + did_commit_ = true;
|
| }
|
|
|
| void IdleTimeEstimator::Clear() {
|
| @@ -54,11 +55,16 @@ void IdleTimeEstimator::SetTimeSourceForTesting(
|
|
|
| void IdleTimeEstimator::WillProcessTask(const base::PendingTask& pending_task) {
|
| nesting_level_++;
|
| - task_start_time_ = time_source_->NowTicks();
|
| + if (nesting_level_ == 1)
|
| + task_start_time_ = time_source_->NowTicks();
|
| }
|
|
|
| void IdleTimeEstimator::DidProcessTask(const base::PendingTask& pending_task) {
|
| - DCHECK_EQ(nesting_level_, 1);
|
| + nesting_level_--;
|
| + DCHECK_GE(nesting_level_, 0);
|
| + if (nesting_level_ != 0)
|
| + return;
|
| +
|
| cumulative_compositor_runtime_ += time_source_->NowTicks() - task_start_time_;
|
|
|
| if (did_commit_) {
|
| @@ -67,7 +73,6 @@ void IdleTimeEstimator::DidProcessTask(const base::PendingTask& pending_task) {
|
| cumulative_compositor_runtime_ = base::TimeDelta();
|
| did_commit_ = false;
|
| }
|
| - nesting_level_--;
|
| }
|
|
|
| } // namespace scheduler
|
|
|