OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/scheduler/scheduler.h" | 5 #include "cc/scheduler/scheduler.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
121 | 121 |
122 base::TimeTicks Scheduler::Now() const { | 122 base::TimeTicks Scheduler::Now() const { |
123 base::TimeTicks now = gfx::FrameTime::Now(); | 123 base::TimeTicks now = gfx::FrameTime::Now(); |
124 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler.now"), | 124 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler.now"), |
125 "Scheduler::Now", | 125 "Scheduler::Now", |
126 "now", | 126 "now", |
127 now); | 127 now); |
128 return now; | 128 return now; |
129 } | 129 } |
130 | 130 |
| 131 void Scheduler::SetAuthoritativeVSyncInterval(const base::TimeDelta& interval) { |
| 132 authoritative_vsync_interval_ = interval; |
| 133 if (vsync_observer_) |
| 134 vsync_observer_->OnUpdateVSyncParameters(last_vsync_timebase_, interval); |
| 135 } |
| 136 |
131 void Scheduler::CommitVSyncParameters(base::TimeTicks timebase, | 137 void Scheduler::CommitVSyncParameters(base::TimeTicks timebase, |
132 base::TimeDelta interval) { | 138 base::TimeDelta interval) { |
| 139 TRACE_EVENT2("cc", "Scheduler::CommitVSyncParameters", "timebase", |
| 140 (timebase - base::TimeTicks()).InSecondsF(), "interval", |
| 141 interval.InSecondsF()); |
| 142 |
133 if (authoritative_vsync_interval_ != base::TimeDelta()) { | 143 if (authoritative_vsync_interval_ != base::TimeDelta()) { |
134 interval = authoritative_vsync_interval_; | 144 interval = authoritative_vsync_interval_; |
135 } else if (interval == base::TimeDelta()) { | 145 } else if (interval == base::TimeDelta()) { |
136 // TODO(brianderson): We should not be receiving 0 intervals. | 146 // TODO(brianderson): We should not be receiving 0 intervals. |
137 interval = BeginFrameArgs::DefaultInterval(); | 147 interval = BeginFrameArgs::DefaultInterval(); |
138 } | 148 } |
139 | 149 |
140 last_vsync_timebase_ = timebase; | 150 last_vsync_timebase_ = timebase; |
141 | 151 |
142 if (vsync_observer_) | 152 if (vsync_observer_) |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
387 BeginImplFrameWithDeadline(adjusted_args); | 397 BeginImplFrameWithDeadline(adjusted_args); |
388 } | 398 } |
389 return true; | 399 return true; |
390 } | 400 } |
391 | 401 |
392 void Scheduler::SetChildrenNeedBeginFrames(bool children_need_begin_frames) { | 402 void Scheduler::SetChildrenNeedBeginFrames(bool children_need_begin_frames) { |
393 state_machine_.SetChildrenNeedBeginFrames(children_need_begin_frames); | 403 state_machine_.SetChildrenNeedBeginFrames(children_need_begin_frames); |
394 ProcessScheduledActions(); | 404 ProcessScheduledActions(); |
395 } | 405 } |
396 | 406 |
397 void Scheduler::SetAuthoritativeVSyncInterval(const base::TimeDelta& interval) { | |
398 authoritative_vsync_interval_ = interval; | |
399 if (vsync_observer_) | |
400 vsync_observer_->OnUpdateVSyncParameters(last_vsync_timebase_, interval); | |
401 } | |
402 | |
403 void Scheduler::OnDrawForOutputSurface() { | 407 void Scheduler::OnDrawForOutputSurface() { |
404 DCHECK(settings_.using_synchronous_renderer_compositor); | 408 DCHECK(settings_.using_synchronous_renderer_compositor); |
405 DCHECK_EQ(state_machine_.begin_impl_frame_state(), | 409 DCHECK_EQ(state_machine_.begin_impl_frame_state(), |
406 SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_IDLE); | 410 SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_IDLE); |
407 DCHECK(!BeginImplFrameDeadlinePending()); | 411 DCHECK(!BeginImplFrameDeadlinePending()); |
408 | 412 |
409 state_machine_.OnBeginImplFrameDeadline(); | 413 state_machine_.OnBeginImplFrameDeadline(); |
410 ProcessScheduledActions(); | 414 ProcessScheduledActions(); |
411 | 415 |
412 state_machine_.OnBeginImplFrameIdle(); | 416 state_machine_.OnBeginImplFrameIdle(); |
(...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
824 } | 828 } |
825 | 829 |
826 bool Scheduler::IsBeginMainFrameSentOrStarted() const { | 830 bool Scheduler::IsBeginMainFrameSentOrStarted() const { |
827 return (state_machine_.commit_state() == | 831 return (state_machine_.commit_state() == |
828 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT || | 832 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT || |
829 state_machine_.commit_state() == | 833 state_machine_.commit_state() == |
830 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_STARTED); | 834 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_STARTED); |
831 } | 835 } |
832 | 836 |
833 } // namespace cc | 837 } // namespace cc |
OLD | NEW |