| Index: cc/scheduler/begin_frame_source.h
|
| diff --git a/cc/scheduler/begin_frame_source.h b/cc/scheduler/begin_frame_source.h
|
| index 575ab06beb450555065d2801b7f388c3b4180bdc..1f5aabb6fe271a8655a768e345a16ec547dcd09b 100644
|
| --- a/cc/scheduler/begin_frame_source.h
|
| +++ b/cc/scheduler/begin_frame_source.h
|
| @@ -131,7 +131,7 @@ class CC_EXPORT BeginFrameSourceBase : public BeginFrameSource {
|
| public:
|
| ~BeginFrameSourceBase() override;
|
|
|
| - // BeginFrameSource
|
| + // BeginFrameSource implementation.
|
| void DidFinishFrame(BeginFrameObserver* obs,
|
| size_t remaining_frames) override {}
|
| void AddObserver(BeginFrameObserver* obs) override;
|
| @@ -145,7 +145,7 @@ class CC_EXPORT BeginFrameSourceBase : public BeginFrameSource {
|
| void CallOnBeginFrame(const BeginFrameArgs& args);
|
| void SetBeginFrameSourcePaused(bool paused);
|
|
|
| - // This notifies that the subclass that it must turn on or off its mechnanism
|
| + // This notifies the subclass that it must turn on or off its mechnanism
|
| // for producing BeginFrames.
|
| virtual void OnNeedsBeginFramesChanged(bool needs_begin_frames) {}
|
|
|
| @@ -158,43 +158,11 @@ class CC_EXPORT BeginFrameSourceBase : public BeginFrameSource {
|
| DISALLOW_COPY_AND_ASSIGN(BeginFrameSourceBase);
|
| };
|
|
|
| -// A frame source which calls BeginFrame (at the next possible time) as soon as
|
| -// remaining frames reaches zero.
|
| -class CC_EXPORT BackToBackBeginFrameSource : public BeginFrameSourceBase {
|
| - public:
|
| - explicit BackToBackBeginFrameSource(
|
| - base::SingleThreadTaskRunner* task_runner);
|
| - ~BackToBackBeginFrameSource() override;
|
| -
|
| - // BeginFrameSource
|
| - void AddObserver(BeginFrameObserver* obs) override;
|
| - void RemoveObserver(BeginFrameObserver* obs) override;
|
| - void DidFinishFrame(BeginFrameObserver* obs,
|
| - size_t remaining_frames) override;
|
| -
|
| - protected:
|
| - virtual base::TimeTicks Now(); // Now overridable for testing
|
| -
|
| - base::SingleThreadTaskRunner* task_runner_;
|
| - base::CancelableClosure begin_frame_task_;
|
| - std::set<BeginFrameObserver*> pending_begin_frame_observers_;
|
| -
|
| - void PostPendingBeginFramesTask();
|
| - void SendPendingBeginFrames();
|
| -
|
| - private:
|
| - base::WeakPtrFactory<BackToBackBeginFrameSource> weak_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(BackToBackBeginFrameSource);
|
| -};
|
| -
|
| // A frame source which is locked to an external parameters provides from a
|
| // vsync source and generates BeginFrameArgs for it.
|
| class CC_EXPORT SyntheticBeginFrameSource : public BeginFrameSourceBase,
|
| public DelayBasedTimeSourceClient {
|
| public:
|
| - explicit SyntheticBeginFrameSource(base::SingleThreadTaskRunner* task_runner,
|
| - base::TimeDelta initial_vsync_interval);
|
| explicit SyntheticBeginFrameSource(
|
| std::unique_ptr<DelayBasedTimeSource> time_source);
|
| ~SyntheticBeginFrameSource() override;
|
| @@ -204,25 +172,49 @@ class CC_EXPORT SyntheticBeginFrameSource : public BeginFrameSourceBase,
|
| // This overrides any past or future interval from updating vsync parameters.
|
| void SetAuthoritativeVSyncInterval(base::TimeDelta interval);
|
|
|
| - // BeginFrameSourceBase
|
| + // BeginFrameSourceBase overrides.
|
| void AddObserver(BeginFrameObserver* obs) override;
|
| + void RemoveObserver(BeginFrameObserver* obs) override;
|
| void OnNeedsBeginFramesChanged(bool needs_begin_frames) override;
|
| + void DidFinishFrame(BeginFrameObserver* obs,
|
| + size_t remaining_frames) override;
|
|
|
| // DelayBasedTimeSourceClient
|
| void OnTimerTick() override;
|
|
|
| + // When unthrottled, BeginFrames will be generates as fast as previous frames
|
| + // finish for each observer.
|
| + void SetUnthrottled(bool unthrottled);
|
| +
|
| protected:
|
| BeginFrameArgs CreateBeginFrameArgs(base::TimeTicks frame_time,
|
| BeginFrameArgs::BeginFrameArgsType type);
|
|
|
| std::unique_ptr<DelayBasedTimeSource> time_source_;
|
| base::TimeTicks last_timebase_;
|
| + base::TimeDelta last_interval_;
|
| base::TimeDelta authoritative_interval_;
|
|
|
| + bool unthrottled_ = false;
|
| + bool needs_unthrottled_tick_ = false;
|
| + std::set<BeginFrameObserver*> frame_finished_observers_;
|
| +
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(SyntheticBeginFrameSource);
|
| };
|
|
|
| +// 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:
|
| + explicit BackToBackBeginFrameSource(
|
| + base::SingleThreadTaskRunner* task_runner);
|
| + ~BackToBackBeginFrameSource() override;
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(BackToBackBeginFrameSource);
|
| +};
|
| +
|
| } // namespace cc
|
|
|
| #endif // CC_SCHEDULER_BEGIN_FRAME_SOURCE_H_
|
|
|