Index: cc/scheduler/scheduler.h |
diff --git a/cc/scheduler/scheduler.h b/cc/scheduler/scheduler.h |
index 33ceee91b39863d09f89157157933d475f067f60..bac1a7b71b4de1d76c9a3ce0f5dba9e8f8e815e0 100644 |
--- a/cc/scheduler/scheduler.h |
+++ b/cc/scheduler/scheduler.h |
@@ -14,7 +14,6 @@ |
#include "base/time/time.h" |
#include "cc/base/cc_export.h" |
#include "cc/output/begin_frame_args.h" |
-#include "cc/output/vsync_parameter_observer.h" |
#include "cc/scheduler/begin_frame_source.h" |
#include "cc/scheduler/begin_frame_tracker.h" |
#include "cc/scheduler/delay_based_time_source.h" |
@@ -54,24 +53,6 @@ class SchedulerClient { |
virtual ~SchedulerClient() {} |
}; |
-class Scheduler; |
-// This class exists to allow tests to override the frame source construction. |
-// A virtual method can't be used as this needs to happen in the constructor |
-// (see C++ FAQ / Section 23 - http://goo.gl/fnrwom for why). |
-// This class exists solely long enough to construct the frame sources. |
-class CC_EXPORT SchedulerFrameSourcesConstructor { |
- public: |
- virtual ~SchedulerFrameSourcesConstructor() {} |
- virtual BeginFrameSource* ConstructPrimaryFrameSource(Scheduler* scheduler); |
- virtual BeginFrameSource* ConstructUnthrottledFrameSource( |
- Scheduler* scheduler); |
- |
- protected: |
- SchedulerFrameSourcesConstructor() {} |
- |
- friend class Scheduler; |
-}; |
- |
class CC_EXPORT Scheduler : public BeginFrameObserverBase { |
public: |
static scoped_ptr<Scheduler> Create( |
@@ -79,15 +60,7 @@ class CC_EXPORT Scheduler : public BeginFrameObserverBase { |
const SchedulerSettings& scheduler_settings, |
int layer_tree_host_id, |
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
- scoped_ptr<BeginFrameSource> external_begin_frame_source) { |
- SchedulerFrameSourcesConstructor frame_sources_constructor; |
- return make_scoped_ptr(new Scheduler(client, |
- scheduler_settings, |
- layer_tree_host_id, |
- task_runner, |
- external_begin_frame_source.Pass(), |
- &frame_sources_constructor)); |
- } |
+ BeginFrameSource* external_frame_source); |
~Scheduler() override; |
@@ -178,31 +151,27 @@ class CC_EXPORT Scheduler : public BeginFrameObserverBase { |
const SchedulerSettings& scheduler_settings, |
int layer_tree_host_id, |
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
- scoped_ptr<BeginFrameSource> external_begin_frame_source, |
- SchedulerFrameSourcesConstructor* frame_sources_constructor); |
+ BeginFrameSource* external_frame_source, |
+ scoped_ptr<SyntheticBeginFrameSource> synthetic_frame_source, |
+ scoped_ptr<BackToBackBeginFrameSource> unthrottled_frame_source); |
// virtual for testing - Don't call these in the constructor or |
// destructor! |
virtual base::TimeTicks Now() const; |
- scoped_ptr<BeginFrameSourceMultiplexer> frame_source_; |
- BeginFrameSource* primary_frame_source_; |
- BeginFrameSource* unthrottled_frame_source_; |
- |
- // Storage when frame sources are internal |
- scoped_ptr<BeginFrameSource> primary_frame_source_internal_; |
- scoped_ptr<BeginFrameSource> unthrottled_frame_source_internal_; |
- |
- VSyncParameterObserver* vsync_observer_; |
- base::TimeDelta authoritative_vsync_interval_; |
- base::TimeTicks last_vsync_timebase_; |
- |
- bool throttle_frame_production_; |
- |
const SchedulerSettings settings_; |
SchedulerClient* client_; |
int layer_tree_host_id_; |
scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
+ BeginFrameSource* external_frame_source_; |
+ scoped_ptr<SyntheticBeginFrameSource> synthetic_frame_source_; |
+ scoped_ptr<BackToBackBeginFrameSource> unthrottled_frame_source_; |
+ |
+ scoped_ptr<BeginFrameSourceMultiplexer> frame_source_; |
+ bool throttle_frame_production_; |
+ |
+ base::TimeDelta authoritative_vsync_interval_; |
+ base::TimeTicks last_vsync_timebase_; |
base::TimeDelta estimated_parent_draw_time_; |
@@ -246,10 +215,15 @@ class CC_EXPORT Scheduler : public BeginFrameObserverBase { |
return inside_action_ == action; |
} |
- base::WeakPtrFactory<Scheduler> weak_factory_; |
+ BeginFrameSource* primary_frame_source() { |
+ if (settings_.use_external_begin_frame_source) { |
+ DCHECK(external_frame_source_); |
+ return external_frame_source_; |
+ } |
+ return synthetic_frame_source_.get(); |
+ } |
- friend class SchedulerFrameSourcesConstructor; |
- friend class TestSchedulerFrameSourcesConstructor; |
+ base::WeakPtrFactory<Scheduler> weak_factory_; |
DISALLOW_COPY_AND_ASSIGN(Scheduler); |
}; |