Index: cc/scheduler/scheduler.h |
diff --git a/cc/scheduler/scheduler.h b/cc/scheduler/scheduler.h |
index 311a71d4b0a66135b84cd0f5f0e1ea9279548d4c..00153da60a84a69505f08ff0cf179b7de79cd439 100644 |
--- a/cc/scheduler/scheduler.h |
+++ b/cc/scheduler/scheduler.h |
@@ -14,6 +14,7 @@ |
#include "base/time/time.h" |
#include "cc/base/cc_export.h" |
#include "cc/output/begin_frame_args.h" |
+#include "cc/scheduler/begin_frame_manager.h" |
#include "cc/scheduler/delay_based_time_source.h" |
#include "cc/scheduler/draw_result.h" |
#include "cc/scheduler/scheduler_settings.h" |
@@ -51,15 +52,19 @@ class SchedulerClient { |
virtual ~SchedulerClient() {} |
}; |
-class CC_EXPORT Scheduler { |
+class CC_EXPORT Scheduler : public BeginFrameManager::Delegate { |
public: |
static scoped_ptr<Scheduler> Create( |
SchedulerClient* client, |
const SchedulerSettings& scheduler_settings, |
int layer_tree_host_id, |
- const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) { |
- return make_scoped_ptr(new Scheduler( |
- client, scheduler_settings, layer_tree_host_id, task_runner)); |
+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
+ BeginFrameManager* begin_frame_manager) { |
+ return make_scoped_ptr(new Scheduler(client, |
+ scheduler_settings, |
+ layer_tree_host_id, |
+ task_runner, |
+ begin_frame_manager)); |
} |
virtual ~Scheduler(); |
@@ -143,6 +148,14 @@ class CC_EXPORT Scheduler { |
state_machine_.SetContinuousPainting(continuous_painting); |
} |
+ // BeginFrameManager::Delegate implementation. |
+ // SetChildrenNeedBeginFrames() is only used when this Scheduler is acting |
+ // as the publisher. |
+ virtual void SetChildrenNeedBeginFrames(bool need_begin_frame) OVERRIDE; |
+ virtual void SetAuthoritativeVSyncInterval( |
+ base::TimeDelta interval) OVERRIDE; |
+ virtual void StartBeginFrame(const BeginFrameArgs& args) OVERRIDE; |
+ |
protected: |
class CC_EXPORT SyntheticBeginFrameSource : public TimeSourceClient { |
public: |
@@ -176,7 +189,8 @@ class CC_EXPORT Scheduler { |
Scheduler(SchedulerClient* client, |
const SchedulerSettings& scheduler_settings, |
int layer_tree_host_id, |
- const scoped_refptr<base::SingleThreadTaskRunner>& task_runner); |
+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
+ BeginFrameManager* begin_frame_manager); |
const SchedulerSettings settings_; |
SchedulerClient* client_; |
@@ -184,6 +198,9 @@ class CC_EXPORT Scheduler { |
scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
base::TimeDelta vsync_interval_; |
+ base::TimeDelta authoritative_vsync_interval_; |
+ base::TimeTicks last_timebase_; |
+ |
base::TimeDelta estimated_parent_draw_time_; |
bool last_set_needs_begin_frame_; |
@@ -208,6 +225,9 @@ class CC_EXPORT Scheduler { |
bool inside_process_scheduled_actions_; |
SchedulerStateMachine::Action inside_action_; |
+ // Not owned. |
+ BeginFrameManager* begin_frame_manager_; |
+ |
private: |
base::TimeTicks AdjustedBeginImplFrameDeadline( |
const BeginFrameArgs& args, |