Index: cc/scheduler/scheduler.cc |
diff --git a/cc/scheduler/scheduler.cc b/cc/scheduler/scheduler.cc |
index ebdc289b18e50082e00ff9cac20698d227e00f0b..d638f6d2bb42c645ddde779643e43c48a4f4ecb9 100644 |
--- a/cc/scheduler/scheduler.cc |
+++ b/cc/scheduler/scheduler.cc |
@@ -19,7 +19,8 @@ Scheduler::Scheduler(SchedulerClient* client, |
last_set_needs_begin_frame_(false), |
has_pending_begin_frame_(false), |
state_machine_(scheduler_settings), |
- inside_process_scheduled_actions_(false) { |
+ inside_process_scheduled_actions_(false), |
+ inside_action_(SchedulerStateMachine::ACTION_NONE) { |
DCHECK(client_); |
DCHECK(!state_machine_.BeginFrameNeededToDrawByImplThread()); |
} |
@@ -64,6 +65,12 @@ void Scheduler::SetNeedsRedraw() { |
ProcessScheduledActions(); |
} |
+void Scheduler::SetNeedsManageTiles() { |
+ DCHECK(!IsInsideAction(SchedulerStateMachine::ACTION_MANAGE_TILES)); |
+ state_machine_.SetNeedsManageTiles(); |
+ ProcessScheduledActions(); |
+} |
+ |
void Scheduler::SetSwapUsedIncompleteTile(bool used_incomplete_tile) { |
state_machine_.SetSwapUsedIncompleteTile(used_incomplete_tile); |
ProcessScheduledActions(); |
@@ -183,8 +190,9 @@ void Scheduler::BeginFrame(const BeginFrameArgs& args) { |
void Scheduler::PollForAnticipatedDrawTriggers() { |
TRACE_EVENT0("cc", "Scheduler::PollForAnticipatedDrawTriggers"); |
- state_machine_.PollForAnticipatedDrawTriggers(); |
+ state_machine_.DidEnterPollForAnticipatedDrawTriggers(); |
ProcessScheduledActions(); |
+ state_machine_.DidLeavePollForAnticipatedDrawTriggers(); |
} |
void Scheduler::DrawAndSwapIfPossible() { |
@@ -223,6 +231,8 @@ void Scheduler::ProcessScheduledActions() { |
"state", |
TracedValue::FromValue(state_machine_.AsValue().release())); |
state_machine_.UpdateState(action); |
+ base::AutoReset<SchedulerStateMachine::Action> |
+ mark_inside_action(&inside_action_, action); |
switch (action) { |
case SchedulerStateMachine::ACTION_NONE: |
break; |
@@ -257,6 +267,9 @@ void Scheduler::ProcessScheduledActions() { |
case SchedulerStateMachine::ACTION_ACQUIRE_LAYER_TEXTURES_FOR_MAIN_THREAD: |
client_->ScheduledActionAcquireLayerTexturesForMainThread(); |
break; |
+ case SchedulerStateMachine::ACTION_MANAGE_TILES: |
+ client_->ScheduledActionManageTiles(); |
+ break; |
} |
} while (action != SchedulerStateMachine::ACTION_NONE); |