| Index: cc/scheduler/delay_based_time_source.h
|
| diff --git a/cc/scheduler/delay_based_time_source.h b/cc/scheduler/delay_based_time_source.h
|
| index 99df6dbafe6d42f49b0ffe4772f7125a5ccd91fb..cd474a5c807f3f66a182b55fea663e454a576001 100644
|
| --- a/cc/scheduler/delay_based_time_source.h
|
| +++ b/cc/scheduler/delay_based_time_source.h
|
| @@ -7,6 +7,7 @@
|
|
|
| #include <string>
|
|
|
| +#include "base/cancelable_callback.h"
|
| #include "base/memory/weak_ptr.h"
|
| #include "base/values.h"
|
| #include "cc/base/cc_export.h"
|
| @@ -19,13 +20,12 @@ class SingleThreadTaskRunner;
|
| }
|
|
|
| namespace cc {
|
| -
|
| -class CC_EXPORT TimeSourceClient {
|
| +class CC_EXPORT DelayBasedTimeSourceClient {
|
| public:
|
| virtual void OnTimerTick() = 0;
|
|
|
| protected:
|
| - virtual ~TimeSourceClient() {}
|
| + virtual ~DelayBasedTimeSourceClient() {}
|
| };
|
|
|
| // This timer implements a time source that achieves the specified interval
|
| @@ -41,23 +41,21 @@ class CC_EXPORT DelayBasedTimeSource {
|
|
|
| virtual ~DelayBasedTimeSource();
|
|
|
| - virtual void SetClient(TimeSourceClient* client);
|
| + void SetClient(DelayBasedTimeSourceClient* client);
|
| +
|
| + void SetTimebaseAndInterval(base::TimeTicks timebase,
|
| + base::TimeDelta interval);
|
|
|
| - // TimeSource implementation
|
| - virtual void SetTimebaseAndInterval(base::TimeTicks timebase,
|
| - base::TimeDelta interval);
|
| - base::TimeDelta Interval() const { return next_parameters_.interval; }
|
| + base::TimeDelta Interval() const;
|
|
|
| - virtual base::TimeTicks SetActive(bool active);
|
| - virtual bool Active() const;
|
| + // Returns the time for the last missed tick.
|
| + base::TimeTicks SetActive(bool active);
|
| + bool Active() const;
|
|
|
| // Get the last and next tick times. NextTickTime() returns null when
|
| // inactive.
|
| - virtual base::TimeTicks LastTickTime() const;
|
| - virtual base::TimeTicks NextTickTime() const;
|
| -
|
| - // Virtual for testing.
|
| - virtual base::TimeTicks Now() const;
|
| + base::TimeTicks LastTickTime() const;
|
| + base::TimeTicks NextTickTime() const;
|
|
|
| virtual void AsValueInto(base::trace_event::TracedValue* dict) const;
|
|
|
| @@ -65,35 +63,34 @@ class CC_EXPORT DelayBasedTimeSource {
|
| DelayBasedTimeSource(base::TimeDelta interval,
|
| base::SingleThreadTaskRunner* task_runner);
|
|
|
| + // Virtual for testing.
|
| + virtual base::TimeTicks Now() const;
|
| virtual std::string TypeString() const;
|
|
|
| - base::TimeTicks NextTickTarget(base::TimeTicks now);
|
| - void PostNextTickTask(base::TimeTicks now);
|
| - void OnTimerFired();
|
| + private:
|
| + base::TimeTicks NextTickTarget(base::TimeTicks now) const;
|
|
|
| - struct Parameters {
|
| - Parameters(base::TimeDelta interval, base::TimeTicks tick_target)
|
| - : interval(interval), tick_target(tick_target) {}
|
| - base::TimeDelta interval;
|
| - base::TimeTicks tick_target;
|
| - };
|
| + void PostNextTickTask(base::TimeTicks now);
|
| + void ResetTickTask(base::TimeTicks now);
|
|
|
| - TimeSourceClient* client_;
|
| - base::TimeTicks last_tick_time_;
|
| + void OnTimerTick();
|
|
|
| - // current_parameters_ should only be written by PostNextTickTask.
|
| - // next_parameters_ will take effect on the next call to PostNextTickTask.
|
| - // Maintaining a pending set of parameters allows NextTickTime() to always
|
| - // reflect the actual time we expect OnTimerFired to be called.
|
| - Parameters current_parameters_;
|
| - Parameters next_parameters_;
|
| + DelayBasedTimeSourceClient* client_;
|
|
|
| bool active_;
|
|
|
| + base::TimeTicks timebase_;
|
| + base::TimeDelta interval_;
|
| +
|
| + base::TimeTicks last_tick_time_;
|
| + base::TimeTicks next_tick_time_;
|
| +
|
| + base::CancelableClosure tick_closure_;
|
| +
|
| base::SingleThreadTaskRunner* task_runner_;
|
| +
|
| base::WeakPtrFactory<DelayBasedTimeSource> weak_factory_;
|
|
|
| - private:
|
| DISALLOW_COPY_AND_ASSIGN(DelayBasedTimeSource);
|
| };
|
|
|
|
|