Chromium Code Reviews| Index: cc/scheduler/delay_based_time_source.cc |
| diff --git a/cc/scheduler/delay_based_time_source.cc b/cc/scheduler/delay_based_time_source.cc |
| index 75250ec33ac8b419c2f4a587b939eb8d85953e0f..7469cdc20216e1f807a91e15e841ba393e7fda4e 100644 |
| --- a/cc/scheduler/delay_based_time_source.cc |
| +++ b/cc/scheduler/delay_based_time_source.cc |
| @@ -14,24 +14,22 @@ |
| #include "base/single_thread_task_runner.h" |
| #include "base/trace_event/trace_event.h" |
| #include "base/trace_event/trace_event_argument.h" |
| +#include "cc/output/begin_frame_args.h" |
| namespace cc { |
| // The following methods correspond to the DelayBasedTimeSource that uses |
| // the base::TimeTicks::Now as the timebase. |
| DelayBasedTimeSource::DelayBasedTimeSource( |
| - base::TimeDelta interval, |
| base::SingleThreadTaskRunner* task_runner) |
| : client_(nullptr), |
| active_(false), |
| timebase_(base::TimeTicks()), |
| - interval_(interval), |
| - last_tick_time_(base::TimeTicks() - interval), |
| + interval_(BeginFrameArgs::DefaultInterval()), |
| + last_tick_time_(base::TimeTicks() - interval_), |
| next_tick_time_(base::TimeTicks()), |
| task_runner_(task_runner), |
| - weak_factory_(this) { |
| - DCHECK_GT(interval, base::TimeDelta()); |
| -} |
| + weak_factory_(this) {} |
| DelayBasedTimeSource::~DelayBasedTimeSource() {} |
| @@ -84,7 +82,7 @@ void DelayBasedTimeSource::SetClient(DelayBasedTimeSourceClient* client) { |
| void DelayBasedTimeSource::SetTimebaseAndInterval(base::TimeTicks timebase, |
| base::TimeDelta interval) { |
| - DCHECK_GT(interval, base::TimeDelta()); |
| + // DCHECK_GT(interval, base::TimeDelta()); |
|
enne (OOO)
2016/06/14 23:13:44
??
danakj
2016/06/14 23:15:24
It must be deleted, we support 0 now. Yay
|
| interval_ = interval; |
| timebase_ = timebase; |
| } |
| @@ -148,10 +146,14 @@ base::TimeTicks DelayBasedTimeSource::Now() const { |
| // now=37 tick_target=16.667 new_target=50.000 --> |
| // tick(), PostDelayedTask(floor(50.000-37)) --> PostDelayedTask(13) |
| void DelayBasedTimeSource::PostNextTickTask(base::TimeTicks now) { |
| - next_tick_time_ = now.SnappedToNextTick(timebase_, interval_); |
| - if (next_tick_time_ == now) |
| - next_tick_time_ += interval_; |
| - DCHECK_GT(next_tick_time_, now); |
| + if (interval_.is_zero()) { |
| + next_tick_time_ = now; |
| + } else { |
| + next_tick_time_ = now.SnappedToNextTick(timebase_, interval_); |
| + if (next_tick_time_ == now) |
| + next_tick_time_ += interval_; |
| + DCHECK_GT(next_tick_time_, now); |
| + } |
| tick_closure_.Reset(base::Bind(&DelayBasedTimeSource::OnTimerTick, |
| weak_factory_.GetWeakPtr())); |
| task_runner_->PostDelayedTask(FROM_HERE, tick_closure_.callback(), |