| Index: cc/scheduler/scheduler.cc
|
| diff --git a/cc/scheduler/scheduler.cc b/cc/scheduler/scheduler.cc
|
| index 0cce5dc9adc6ea8dd58bd70da3ee6b12645ba1f1..99bd280e1ba0b27edea35adc8f9e860f7b906645 100644
|
| --- a/cc/scheduler/scheduler.cc
|
| +++ b/cc/scheduler/scheduler.cc
|
| @@ -85,6 +85,7 @@ Scheduler::Scheduler(
|
| primary_frame_source_internal_(external_begin_frame_source.Pass()),
|
| background_frame_source_internal_(),
|
| vsync_observer_(NULL),
|
| + authoritative_vsync_interval_(base::TimeDelta()),
|
| settings_(scheduler_settings),
|
| client_(client),
|
| layer_tree_host_id_(layer_tree_host_id),
|
| @@ -166,12 +167,18 @@ void Scheduler::OnPowerStateChange(bool on_battery_power) {
|
|
|
| void Scheduler::CommitVSyncParameters(base::TimeTicks timebase,
|
| base::TimeDelta interval) {
|
| - // TODO(brianderson): We should not be receiving 0 intervals.
|
| - if (interval == base::TimeDelta())
|
| - interval = BeginFrameArgs::DefaultInterval();
|
| + base::TimeDelta vsync_interval;
|
| + if (authoritative_vsync_interval_ != base::TimeDelta()) {
|
| + vsync_interval = authoritative_vsync_interval_;
|
| + } else if (interval == base::TimeDelta()) {
|
| + // TODO(brianderson): We should not be receiving 0 intervals.
|
| + vsync_interval = BeginFrameArgs::DefaultInterval();
|
| + } else {
|
| + vsync_interval = interval;
|
| + }
|
|
|
| if (vsync_observer_)
|
| - vsync_observer_->OnUpdateVSyncParameters(timebase, interval);
|
| + vsync_observer_->OnUpdateVSyncParameters(timebase, vsync_interval);
|
| }
|
|
|
| void Scheduler::SetEstimatedParentDrawTime(base::TimeDelta draw_time) {
|
| @@ -449,6 +456,10 @@ void Scheduler::SetChildrenNeedBeginFrames(bool children_need_begin_frames) {
|
| DCHECK_EQ(state_machine_.NextAction(), SchedulerStateMachine::ACTION_NONE);
|
| }
|
|
|
| +void Scheduler::SetAuthoritativeVSyncInterval(base::TimeDelta interval) {
|
| + authoritative_vsync_interval_ = interval;
|
| +}
|
| +
|
| // BeginRetroFrame is called for BeginFrames that we've deferred because
|
| // the scheduler was in the middle of processing a previous BeginFrame.
|
| void Scheduler::BeginRetroFrame() {
|
|
|