Chromium Code Reviews| Index: cc/scheduler/begin_frame_source.h |
| diff --git a/cc/scheduler/begin_frame_source.h b/cc/scheduler/begin_frame_source.h |
| index 0a8a51f08d7c911d6c1594b1623ae74ad5a9fe43..114727028cf6f9b2e2aee5abd7790db1e439b2f6 100644 |
| --- a/cc/scheduler/begin_frame_source.h |
| +++ b/cc/scheduler/begin_frame_source.h |
| @@ -136,11 +136,13 @@ class CC_EXPORT SyntheticBeginFrameSource : public BeginFrameSource { |
| // A frame source which calls BeginFrame (at the next possible time) as soon as |
| // remaining frames reaches zero. |
| -class CC_EXPORT BackToBackBeginFrameSource : public SyntheticBeginFrameSource, |
| - public DelayBasedTimeSourceClient { |
| +class CC_EXPORT BackToBackBeginFrameSource : public SyntheticBeginFrameSource { |
| public: |
| explicit BackToBackBeginFrameSource( |
| - std::unique_ptr<DelayBasedTimeSource> time_source); |
| + base::SingleThreadTaskRunner* task_runner); |
| + // For testing. |
|
danakj
2016/07/13 21:00:59
Can we avoid reintroducing for-testing constructor
|
| + BackToBackBeginFrameSource(base::SingleThreadTaskRunner* task_runner, |
| + base::TickClock* clock); |
| ~BackToBackBeginFrameSource() override; |
| // BeginFrameSource implementation. |
| @@ -154,13 +156,14 @@ class CC_EXPORT BackToBackBeginFrameSource : public SyntheticBeginFrameSource, |
| base::TimeDelta interval) override {} |
| void SetAuthoritativeVSyncInterval(base::TimeDelta interval) override {} |
| - // DelayBasedTimeSourceClient implementation. |
| - void OnTimerTick() override; |
| - |
| private: |
| - std::unique_ptr<DelayBasedTimeSource> time_source_; |
| + void SendBeginFrame(); |
| + |
| + base::SingleThreadTaskRunner* task_runner_; |
| + base::TickClock* clock_; |
| + base::CancelableClosure begin_frame_callback_; |
| std::unordered_set<BeginFrameObserver*> observers_; |
| - std::unordered_set<BeginFrameObserver*> pending_begin_frame_observers_; |
| + std::unordered_set<BeginFrameObserver*> pending_observers_; |
| base::WeakPtrFactory<BackToBackBeginFrameSource> weak_factory_; |
| DISALLOW_COPY_AND_ASSIGN(BackToBackBeginFrameSource); |
| @@ -172,7 +175,10 @@ class CC_EXPORT DelayBasedBeginFrameSource : public SyntheticBeginFrameSource, |
| public DelayBasedTimeSourceClient { |
| public: |
| explicit DelayBasedBeginFrameSource( |
| - std::unique_ptr<DelayBasedTimeSource> time_source); |
| + base::SingleThreadTaskRunner* task_runner); |
| + // For testing. |
| + DelayBasedBeginFrameSource(base::SingleThreadTaskRunner* task_runner, |
| + base::TickClock* clock); |
| ~DelayBasedBeginFrameSource() override; |
| // BeginFrameSource implementation. |
| @@ -192,11 +198,16 @@ class CC_EXPORT DelayBasedBeginFrameSource : public SyntheticBeginFrameSource, |
| private: |
| BeginFrameArgs CreateBeginFrameArgs(base::TimeTicks frame_time, |
| BeginFrameArgs::BeginFrameArgsType type); |
| + void SendMissedBeginFrame(); |
| std::unique_ptr<DelayBasedTimeSource> time_source_; |
| + base::SingleThreadTaskRunner* task_runner_; |
| + base::CancelableClosure missed_frame_callback_; |
| std::unordered_set<BeginFrameObserver*> observers_; |
| + std::unordered_set<BeginFrameObserver*> missed_frame_observers_; |
| base::TimeTicks last_timebase_; |
| base::TimeDelta authoritative_interval_; |
| + base::WeakPtrFactory<DelayBasedBeginFrameSource> weak_factory_; |
| DISALLOW_COPY_AND_ASSIGN(DelayBasedBeginFrameSource); |
| }; |