| Index: cc/scheduler/begin_frame_source.h
|
| diff --git a/cc/scheduler/begin_frame_source.h b/cc/scheduler/begin_frame_source.h
|
| index bde01afd79ec6bd72a1d525c85b9d6d49bafe9d0..c25fff651426ef031f8d22ae2446809f81f2256a 100644
|
| --- a/cc/scheduler/begin_frame_source.h
|
| +++ b/cc/scheduler/begin_frame_source.h
|
| @@ -26,8 +26,10 @@ class CC_EXPORT BeginFrameObserver {
|
| virtual ~BeginFrameObserver() {}
|
|
|
| // The |args| given to OnBeginFrame is guaranteed to have
|
| - // |args|.IsValid()==true and have |args|.frame_time
|
| - // field be strictly greater than the previous call.
|
| + // |args|.IsValid()==true. If |args|.source_id did not change between
|
| + // invocations, |args|.sequence_number is guaranteed to be be strictly greater
|
| + // than the previous call. Further, |args|.frame_time is guaranteed to be
|
| + // greater than or equal to the previous call even if the source_id changes.
|
| //
|
| // Side effects: This function can (and most of the time *will*) change the
|
| // return value of the LastUsedBeginFrameArgs method. See the documentation
|
| @@ -99,6 +101,7 @@ class CC_EXPORT BeginFrameObserverBase : public BeginFrameObserver {
|
| // all BeginFrameSources *must* provide.
|
| class CC_EXPORT BeginFrameSource {
|
| public:
|
| + BeginFrameSource();
|
| virtual ~BeginFrameSource() {}
|
|
|
| // DidFinishFrame provides back pressure to a frame source about frame
|
| @@ -116,6 +119,15 @@ class CC_EXPORT BeginFrameSource {
|
| // Returns false if the begin frame source will just continue to produce
|
| // begin frames without waiting.
|
| virtual bool IsThrottled() const = 0;
|
| +
|
| + // Returns an identifier for this BeginFrameSource. Guaranteed unique within a
|
| + // process, but not across processes. This is used to create BeginFrames that
|
| + // originate at this source. Note that BeginFrameSources may pass on
|
| + // BeginFrames created by other sources, with different IDs.
|
| + uint32_t source_id() const;
|
| +
|
| + private:
|
| + uint32_t source_id_;
|
| };
|
|
|
| // A BeginFrameSource that does nothing.
|
| @@ -167,6 +179,7 @@ class CC_EXPORT BackToBackBeginFrameSource : public SyntheticBeginFrameSource,
|
| std::unique_ptr<DelayBasedTimeSource> time_source_;
|
| std::unordered_set<BeginFrameObserver*> observers_;
|
| std::unordered_set<BeginFrameObserver*> pending_begin_frame_observers_;
|
| + uint64_t next_sequence_number_;
|
| base::WeakPtrFactory<BackToBackBeginFrameSource> weak_factory_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(BackToBackBeginFrameSource);
|
| @@ -204,6 +217,8 @@ class CC_EXPORT DelayBasedBeginFrameSource : public SyntheticBeginFrameSource,
|
| std::unordered_set<BeginFrameObserver*> observers_;
|
| base::TimeTicks last_timebase_;
|
| base::TimeDelta authoritative_interval_;
|
| + BeginFrameArgs current_begin_frame_args_;
|
| + uint64_t next_sequence_number_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(DelayBasedBeginFrameSource);
|
| };
|
|
|