Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2867)

Unified Diff: cc/scheduler/begin_frame_source.h

Issue 2061273002: cc: Make BackToBackBeginFrameSource a SyntheticBeginFrameSource. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: syntheticbeginframesource: delete-DEBUG_FRAMES Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | cc/scheduler/begin_frame_source.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..8a3034cc702bdd4415105c9c902d31f704ad6d46 100644
--- a/cc/scheduler/begin_frame_source.h
+++ b/cc/scheduler/begin_frame_source.h
@@ -17,14 +17,6 @@
#include "cc/output/begin_frame_args.h"
#include "cc/scheduler/delay_based_time_source.h"
-#ifdef NDEBUG
-#define DEBUG_FRAMES(...)
-#else
-#define DEBUG_FRAMES(name, arg1_name, arg1_val, arg2_name, arg2_val) \
- TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler.frames"), name, \
- arg1_name, arg1_val, arg2_name, arg2_val);
-#endif
-
namespace cc {
// (Pure) Interface for observing BeginFrame messages from BeginFrameSource
@@ -122,67 +114,44 @@ class CC_EXPORT BeginFrameSource {
virtual void RemoveObserver(BeginFrameObserver* obs) = 0;
};
-// Simple base class which implements a BeginFrameSource.
-// Implementation classes should:
-// - Implement the pure virtual (Set)NeedsBeginFrames methods from
-// BeginFrameSource.
-// - Use the CallOnBeginFrame method to call to the observer(s).
-class CC_EXPORT BeginFrameSourceBase : public BeginFrameSource {
+// A frame source which ticks itself independently.
+class CC_EXPORT SyntheticBeginFrameSource : public BeginFrameSource {
public:
- ~BeginFrameSourceBase() override;
-
- // BeginFrameSource
- void DidFinishFrame(BeginFrameObserver* obs,
- size_t remaining_frames) override {}
- void AddObserver(BeginFrameObserver* obs) override;
- void RemoveObserver(BeginFrameObserver* obs) override;
-
- protected:
- BeginFrameSourceBase();
-
- // These methods should be used by subclasses to make the call to the
- // observers.
- void CallOnBeginFrame(const BeginFrameArgs& args);
- void SetBeginFrameSourcePaused(bool paused);
-
- // This notifies that the subclass that it must turn on or off its mechnanism
- // for producing BeginFrames.
- virtual void OnNeedsBeginFramesChanged(bool needs_begin_frames) {}
-
- bool needs_begin_frames() const { return !observers_.empty(); }
-
- std::set<BeginFrameObserver*> observers_;
- bool paused_;
+ ~SyntheticBeginFrameSource() override;
- private:
- DISALLOW_COPY_AND_ASSIGN(BeginFrameSourceBase);
+ virtual void OnUpdateVSyncParameters(base::TimeTicks timebase,
+ base::TimeDelta interval) = 0;
+ // This overrides any past or future interval from updating vsync parameters.
+ virtual void SetAuthoritativeVSyncInterval(base::TimeDelta interval) = 0;
};
// A frame source which calls BeginFrame (at the next possible time) as soon as
// remaining frames reaches zero.
-class CC_EXPORT BackToBackBeginFrameSource : public BeginFrameSourceBase {
+class CC_EXPORT BackToBackBeginFrameSource : public SyntheticBeginFrameSource,
+ public DelayBasedTimeSourceClient {
public:
explicit BackToBackBeginFrameSource(
- base::SingleThreadTaskRunner* task_runner);
+ std::unique_ptr<DelayBasedTimeSource> time_source);
~BackToBackBeginFrameSource() override;
- // BeginFrameSource
+ // BeginFrameSource implementation.
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_;
+ // SyntheticBeginFrameSource implementation.
+ void OnUpdateVSyncParameters(base::TimeTicks timebase,
+ base::TimeDelta interval) override {}
+ void SetAuthoritativeVSyncInterval(base::TimeDelta interval) override {}
- void PostPendingBeginFramesTask();
- void SendPendingBeginFrames();
+ // DelayBasedTimeSourceClient implementation.
+ void OnTimerTick() override;
private:
+ std::unique_ptr<DelayBasedTimeSource> time_source_;
+ std::unordered_set<BeginFrameObserver*> observers_;
+ std::unordered_set<BeginFrameObserver*> pending_begin_frame_observers_;
base::WeakPtrFactory<BackToBackBeginFrameSource> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(BackToBackBeginFrameSource);
@@ -190,37 +159,37 @@ class CC_EXPORT BackToBackBeginFrameSource : public BeginFrameSourceBase {
// 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 {
+class CC_EXPORT DelayBasedBeginFrameSource : public SyntheticBeginFrameSource,
+ public DelayBasedTimeSourceClient {
public:
- explicit SyntheticBeginFrameSource(base::SingleThreadTaskRunner* task_runner,
- base::TimeDelta initial_vsync_interval);
- explicit SyntheticBeginFrameSource(
+ explicit DelayBasedBeginFrameSource(
std::unique_ptr<DelayBasedTimeSource> time_source);
- ~SyntheticBeginFrameSource() override;
-
- void OnUpdateVSyncParameters(base::TimeTicks timebase,
- base::TimeDelta interval);
- // This overrides any past or future interval from updating vsync parameters.
- void SetAuthoritativeVSyncInterval(base::TimeDelta interval);
+ ~DelayBasedBeginFrameSource() override;
- // BeginFrameSourceBase
+ // BeginFrameSource implementation.
void AddObserver(BeginFrameObserver* obs) override;
- void OnNeedsBeginFramesChanged(bool needs_begin_frames) override;
+ void RemoveObserver(BeginFrameObserver* obs) override;
+ void DidFinishFrame(BeginFrameObserver* obs,
+ size_t remaining_frames) override {}
+
+ // SyntheticBeginFrameSource implementation.
+ void OnUpdateVSyncParameters(base::TimeTicks timebase,
+ base::TimeDelta interval) override;
+ void SetAuthoritativeVSyncInterval(base::TimeDelta interval) override;
- // DelayBasedTimeSourceClient
+ // DelayBasedTimeSourceClient implementation.
void OnTimerTick() override;
- protected:
+ private:
BeginFrameArgs CreateBeginFrameArgs(base::TimeTicks frame_time,
BeginFrameArgs::BeginFrameArgsType type);
std::unique_ptr<DelayBasedTimeSource> time_source_;
+ std::unordered_set<BeginFrameObserver*> observers_;
base::TimeTicks last_timebase_;
base::TimeDelta authoritative_interval_;
- private:
- DISALLOW_COPY_AND_ASSIGN(SyntheticBeginFrameSource);
+ DISALLOW_COPY_AND_ASSIGN(DelayBasedBeginFrameSource);
};
} // namespace cc
« no previous file with comments | « no previous file | cc/scheduler/begin_frame_source.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698