Index: cc/scheduler/scheduler.cc |
diff --git a/cc/scheduler/scheduler.cc b/cc/scheduler/scheduler.cc |
index 88c27c103e33fe2d85302772a302663515a5715c..5c515b2512e210919d95dcd82593359861777cdf 100644 |
--- a/cc/scheduler/scheduler.cc |
+++ b/cc/scheduler/scheduler.cc |
@@ -5,6 +5,7 @@ |
#include "cc/scheduler/scheduler.h" |
#include <algorithm> |
+ |
#include "base/auto_reset.h" |
#include "base/debug/trace_event.h" |
#include "base/debug/trace_event_argument.h" |
@@ -28,12 +29,14 @@ BeginFrameSource* SchedulerFrameSourcesConstructor::ConstructPrimaryFrameSource( |
scheduler->primary_frame_source_internal_ = |
BackToBackBeginFrameSource::Create(scheduler->task_runner_.get()); |
return scheduler->primary_frame_source_internal_.get(); |
- } else if (scheduler->settings_.begin_frame_scheduling_enabled) { |
+ } else if (scheduler->settings_.use_external_begin_frame_source) { |
TRACE_EVENT1("cc", |
"Scheduler::Scheduler()", |
"PrimaryFrameSource", |
- "SchedulerClient"); |
- return scheduler->client_->ExternalBeginFrameSource(); |
+ "ExternalBeginFrameSource"); |
+ DCHECK(scheduler->primary_frame_source_internal_) |
+ << "Need external BeginFrameSource"; |
+ return scheduler->primary_frame_source_internal_.get(); |
} else { |
TRACE_EVENT1("cc", |
"Scheduler::Scheduler()", |
@@ -62,9 +65,9 @@ SchedulerFrameSourcesConstructor::ConstructBackgroundFrameSource( |
"SyntheticBeginFrameSource"); |
DCHECK(!(scheduler->background_frame_source_internal_)); |
scheduler->background_frame_source_internal_ = |
- SyntheticBeginFrameSource::Create(scheduler->task_runner_.get(), |
- scheduler->Now(), |
- base::TimeDelta::FromSeconds(1)); |
+ SyntheticBeginFrameSource::Create( |
+ scheduler->task_runner_.get(), scheduler->Now(), |
+ scheduler->settings_.background_frame_interval); |
return scheduler->background_frame_source_internal_.get(); |
} |
@@ -74,11 +77,12 @@ Scheduler::Scheduler( |
int layer_tree_host_id, |
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
base::PowerMonitor* power_monitor, |
+ scoped_ptr<BeginFrameSource> external_begin_frame_source, |
SchedulerFrameSourcesConstructor* frame_sources_constructor) |
: frame_source_(), |
primary_frame_source_(NULL), |
background_frame_source_(NULL), |
- primary_frame_source_internal_(), |
+ primary_frame_source_internal_(external_begin_frame_source.Pass()), |
background_frame_source_internal_(), |
vsync_observer_(NULL), |
settings_(scheduler_settings), |
@@ -114,6 +118,7 @@ Scheduler::Scheduler( |
primary_frame_source_ = |
frame_sources_constructor->ConstructPrimaryFrameSource(this); |
frame_source_->AddSource(primary_frame_source_); |
+ primary_frame_source_->SetClientReady(); |
// Background ticking frame source |
background_frame_source_ = |
@@ -125,6 +130,8 @@ Scheduler::Scheduler( |
Scheduler::~Scheduler() { |
TeardownPowerMonitoring(); |
+ if (frame_source_->NeedsBeginFrames()) |
+ frame_source_->SetNeedsBeginFrames(false); |
} |
base::TimeTicks Scheduler::Now() const { |
@@ -197,6 +204,11 @@ void Scheduler::NotifyReadyToActivate() { |
ProcessScheduledActions(); |
} |
+void Scheduler::NotifyReadyToDraw() { |
+ // Empty for now, until we take action based on the notification as part of |
+ // crbugs 352894, 383157, 421923. |
+} |
+ |
void Scheduler::SetNeedsCommit() { |
state_machine_.SetNeedsCommit(); |
ProcessScheduledActions(); |