| Index: cc/scheduler/scheduler.cc
|
| diff --git a/cc/scheduler/scheduler.cc b/cc/scheduler/scheduler.cc
|
| index 5b15a5a60f990de3f088e76bf89f5d903f41cd6b..88c27c103e33fe2d85302772a302663515a5715c 100644
|
| --- a/cc/scheduler/scheduler.cc
|
| +++ b/cc/scheduler/scheduler.cc
|
| @@ -73,6 +73,7 @@ Scheduler::Scheduler(
|
| const SchedulerSettings& scheduler_settings,
|
| int layer_tree_host_id,
|
| const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
|
| + base::PowerMonitor* power_monitor,
|
| SchedulerFrameSourcesConstructor* frame_sources_constructor)
|
| : frame_source_(),
|
| primary_frame_source_(NULL),
|
| @@ -84,6 +85,7 @@ Scheduler::Scheduler(
|
| client_(client),
|
| layer_tree_host_id_(layer_tree_host_id),
|
| task_runner_(task_runner),
|
| + power_monitor_(power_monitor),
|
| begin_retro_frame_posted_(false),
|
| state_machine_(scheduler_settings),
|
| inside_process_scheduled_actions_(false),
|
| @@ -117,9 +119,12 @@ Scheduler::Scheduler(
|
| background_frame_source_ =
|
| frame_sources_constructor->ConstructBackgroundFrameSource(this);
|
| frame_source_->AddSource(background_frame_source_);
|
| +
|
| + SetupPowerMonitoring();
|
| }
|
|
|
| Scheduler::~Scheduler() {
|
| + TeardownPowerMonitoring();
|
| }
|
|
|
| base::TimeTicks Scheduler::Now() const {
|
| @@ -131,6 +136,27 @@ base::TimeTicks Scheduler::Now() const {
|
| return now;
|
| }
|
|
|
| +void Scheduler::SetupPowerMonitoring() {
|
| + if (settings_.disable_hi_res_timer_tasks_on_battery) {
|
| + DCHECK(power_monitor_);
|
| + power_monitor_->AddObserver(this);
|
| + state_machine_.SetImplLatencyTakesPriorityOnBattery(
|
| + power_monitor_->IsOnBatteryPower());
|
| + }
|
| +}
|
| +
|
| +void Scheduler::TeardownPowerMonitoring() {
|
| + if (settings_.disable_hi_res_timer_tasks_on_battery) {
|
| + DCHECK(power_monitor_);
|
| + power_monitor_->RemoveObserver(this);
|
| + }
|
| +}
|
| +
|
| +void Scheduler::OnPowerStateChange(bool on_battery_power) {
|
| + DCHECK(settings_.disable_hi_res_timer_tasks_on_battery);
|
| + state_machine_.SetImplLatencyTakesPriorityOnBattery(on_battery_power);
|
| +}
|
| +
|
| void Scheduler::CommitVSyncParameters(base::TimeTicks timebase,
|
| base::TimeDelta interval) {
|
| // TODO(brianderson): We should not be receiving 0 intervals.
|
|
|