| Index: cc/scheduler/scheduler.cc
|
| diff --git a/cc/scheduler/scheduler.cc b/cc/scheduler/scheduler.cc
|
| index 904a0574515dac727b021f59386a721a0bb2f3c7..70d726d42bc971026ecd426e82c29e4697fd744e 100644
|
| --- a/cc/scheduler/scheduler.cc
|
| +++ b/cc/scheduler/scheduler.cc
|
| @@ -8,6 +8,7 @@
|
|
|
| #include "base/auto_reset.h"
|
| #include "base/logging.h"
|
| +#include "base/profiler/scoped_tracker.h"
|
| #include "base/single_thread_task_runner.h"
|
| #include "base/trace_event/trace_event.h"
|
| #include "base/trace_event/trace_event_argument.h"
|
| @@ -78,7 +79,6 @@ Scheduler::Scheduler(
|
| const SchedulerSettings& scheduler_settings,
|
| 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_(),
|
| @@ -92,7 +92,6 @@ Scheduler::Scheduler(
|
| client_(client),
|
| layer_tree_host_id_(layer_tree_host_id),
|
| task_runner_(task_runner),
|
| - power_monitor_(power_monitor),
|
| state_machine_(scheduler_settings),
|
| inside_process_scheduled_actions_(false),
|
| inside_action_(SchedulerStateMachine::ACTION_NONE),
|
| @@ -131,12 +130,9 @@ Scheduler::Scheduler(
|
| unthrottled_frame_source_ =
|
| frame_sources_constructor->ConstructUnthrottledFrameSource(this);
|
| frame_source_->AddSource(unthrottled_frame_source_);
|
| -
|
| - SetupPowerMonitoring();
|
| }
|
|
|
| Scheduler::~Scheduler() {
|
| - TeardownPowerMonitoring();
|
| if (frame_source_->NeedsBeginFrames())
|
| frame_source_->SetNeedsBeginFrames(false);
|
| }
|
| @@ -150,27 +146,6 @@ 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.
|
| @@ -647,11 +622,25 @@ void Scheduler::OnBeginImplFrameDeadline() {
|
| // order to wait for more user-input before starting the next commit.
|
| // * Creating a new OuputSurface will not occur during the deadline in
|
| // order to allow the state machine to "settle" first.
|
| +
|
| + // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is fixed.
|
| + tracked_objects::ScopedTracker tracking_profile1(
|
| + FROM_HERE_WITH_EXPLICIT_FUNCTION(
|
| + "461509 Scheduler::OnBeginImplFrameDeadline1"));
|
| state_machine_.OnBeginImplFrameDeadline();
|
| ProcessScheduledActions();
|
| +
|
| + // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is fixed.
|
| + tracked_objects::ScopedTracker tracking_profile2(
|
| + FROM_HERE_WITH_EXPLICIT_FUNCTION(
|
| + "461509 Scheduler::OnBeginImplFrameDeadline2"));
|
| state_machine_.OnBeginImplFrameIdle();
|
| ProcessScheduledActions();
|
|
|
| + // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is fixed.
|
| + tracked_objects::ScopedTracker tracking_profile3(
|
| + FROM_HERE_WITH_EXPLICIT_FUNCTION(
|
| + "461509 Scheduler::OnBeginImplFrameDeadline3"));
|
| client_->DidBeginImplFrameDeadline();
|
| }
|
|
|
| @@ -692,6 +681,10 @@ void Scheduler::ProcessScheduledActions() {
|
|
|
| SchedulerStateMachine::Action action;
|
| do {
|
| + // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is fixed.
|
| + tracked_objects::ScopedTracker tracking_profile1(
|
| + FROM_HERE_WITH_EXPLICIT_FUNCTION(
|
| + "461509 Scheduler::ProcessScheduledActions1"));
|
| action = state_machine_.NextAction();
|
| TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler"),
|
| "SchedulerStateMachine",
|
| @@ -706,40 +699,96 @@ void Scheduler::ProcessScheduledActions() {
|
| switch (action) {
|
| case SchedulerStateMachine::ACTION_NONE:
|
| break;
|
| - case SchedulerStateMachine::ACTION_ANIMATE:
|
| + case SchedulerStateMachine::ACTION_ANIMATE: {
|
| + // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is
|
| + // fixed.
|
| + tracked_objects::ScopedTracker tracking_profile2(
|
| + FROM_HERE_WITH_EXPLICIT_FUNCTION(
|
| + "461509 Scheduler::ProcessScheduledActions2"));
|
| client_->ScheduledActionAnimate();
|
| break;
|
| - case SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME:
|
| + }
|
| + case SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME: {
|
| + // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is
|
| + // fixed.
|
| + tracked_objects::ScopedTracker tracking_profile3(
|
| + FROM_HERE_WITH_EXPLICIT_FUNCTION(
|
| + "461509 Scheduler::ProcessScheduledActions3"));
|
| client_->ScheduledActionSendBeginMainFrame();
|
| break;
|
| - case SchedulerStateMachine::ACTION_COMMIT:
|
| + }
|
| + case SchedulerStateMachine::ACTION_COMMIT: {
|
| + // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is
|
| + // fixed.
|
| + tracked_objects::ScopedTracker tracking_profile4(
|
| + FROM_HERE_WITH_EXPLICIT_FUNCTION(
|
| + "461509 Scheduler::ProcessScheduledActions4"));
|
| client_->ScheduledActionCommit();
|
| break;
|
| - case SchedulerStateMachine::ACTION_ACTIVATE_SYNC_TREE:
|
| + }
|
| + case SchedulerStateMachine::ACTION_ACTIVATE_SYNC_TREE: {
|
| + // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is
|
| + // fixed.
|
| + tracked_objects::ScopedTracker tracking_profile5(
|
| + FROM_HERE_WITH_EXPLICIT_FUNCTION(
|
| + "461509 Scheduler::ProcessScheduledActions5"));
|
| client_->ScheduledActionActivateSyncTree();
|
| break;
|
| - case SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE:
|
| + }
|
| + case SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE: {
|
| + // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is
|
| + // fixed.
|
| + tracked_objects::ScopedTracker tracking_profile6(
|
| + FROM_HERE_WITH_EXPLICIT_FUNCTION(
|
| + "461509 Scheduler::ProcessScheduledActions6"));
|
| DrawAndSwapIfPossible();
|
| break;
|
| - case SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED:
|
| + }
|
| + case SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED: {
|
| + // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is
|
| + // fixed.
|
| + tracked_objects::ScopedTracker tracking_profile7(
|
| + FROM_HERE_WITH_EXPLICIT_FUNCTION(
|
| + "461509 Scheduler::ProcessScheduledActions7"));
|
| client_->ScheduledActionDrawAndSwapForced();
|
| break;
|
| + }
|
| case SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT:
|
| // No action is actually performed, but this allows the state machine to
|
| // advance out of its waiting to draw state without actually drawing.
|
| break;
|
| - case SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION:
|
| + case SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION: {
|
| + // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is
|
| + // fixed.
|
| + tracked_objects::ScopedTracker tracking_profile8(
|
| + FROM_HERE_WITH_EXPLICIT_FUNCTION(
|
| + "461509 Scheduler::ProcessScheduledActions8"));
|
| client_->ScheduledActionBeginOutputSurfaceCreation();
|
| break;
|
| - case SchedulerStateMachine::ACTION_PREPARE_TILES:
|
| + }
|
| + case SchedulerStateMachine::ACTION_PREPARE_TILES: {
|
| + // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is
|
| + // fixed.
|
| + tracked_objects::ScopedTracker tracking_profile9(
|
| + FROM_HERE_WITH_EXPLICIT_FUNCTION(
|
| + "461509 Scheduler::ProcessScheduledActions9"));
|
| client_->ScheduledActionPrepareTiles();
|
| break;
|
| + }
|
| }
|
| } while (action != SchedulerStateMachine::ACTION_NONE);
|
|
|
| + // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is fixed.
|
| + tracked_objects::ScopedTracker tracking_profile10(
|
| + FROM_HERE_WITH_EXPLICIT_FUNCTION(
|
| + "461509 Scheduler::ProcessScheduledActions10"));
|
| SetupNextBeginFrameIfNeeded();
|
| client_->DidAnticipatedDrawTimeChange(AnticipatedDrawTime());
|
|
|
| + // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is fixed.
|
| + tracked_objects::ScopedTracker tracking_profile11(
|
| + FROM_HERE_WITH_EXPLICIT_FUNCTION(
|
| + "461509 Scheduler::ProcessScheduledActions11"));
|
| RescheduleBeginImplFrameDeadlineIfNeeded();
|
| }
|
|
|
|
|