| Index: cc/scheduler/scheduler.cc
|
| diff --git a/cc/scheduler/scheduler.cc b/cc/scheduler/scheduler.cc
|
| index e383894a7836f9164ceb6cb14e647ce929837622..5fd5a99488763726f75f2103ffcfad4b2d3511c5 100644
|
| --- a/cc/scheduler/scheduler.cc
|
| +++ b/cc/scheduler/scheduler.cc
|
| @@ -54,9 +54,9 @@ void Scheduler::SetNeedsCommit() {
|
| ProcessScheduledActions();
|
| }
|
|
|
| -void Scheduler::SetNeedsForcedCommit() {
|
| +void Scheduler::SetNeedsForcedCommitForReadback() {
|
| state_machine_.SetNeedsCommit();
|
| - state_machine_.SetNeedsForcedCommit();
|
| + state_machine_.SetNeedsForcedCommitForReadback();
|
| ProcessScheduledActions();
|
| }
|
|
|
| @@ -70,11 +70,6 @@ void Scheduler::DidSwapUseIncompleteTile() {
|
| ProcessScheduledActions();
|
| }
|
|
|
| -void Scheduler::SetNeedsForcedRedraw() {
|
| - state_machine_.SetNeedsForcedRedraw();
|
| - ProcessScheduledActions();
|
| -}
|
| -
|
| void Scheduler::SetMainThreadNeedsLayerTextures() {
|
| state_machine_.SetMainThreadNeedsLayerTextures();
|
| ProcessScheduledActions();
|
| @@ -178,7 +173,7 @@ void Scheduler::BeginFrame(const BeginFrameArgs& args) {
|
| }
|
|
|
| void Scheduler::DrawAndSwapIfPossible() {
|
| - ScheduledActionDrawAndSwapResult result =
|
| + DrawSwapReadbackResult result =
|
| client_->ScheduledActionDrawAndSwapIfPossible();
|
| state_machine_.DidDrawIfPossibleCompleted(result.did_draw);
|
| if (result.did_swap)
|
| @@ -186,12 +181,16 @@ void Scheduler::DrawAndSwapIfPossible() {
|
| }
|
|
|
| void Scheduler::DrawAndSwapForced() {
|
| - ScheduledActionDrawAndSwapResult result =
|
| - client_->ScheduledActionDrawAndSwapForced();
|
| + DrawSwapReadbackResult result = client_->ScheduledActionDrawAndSwapForced();
|
| if (result.did_swap)
|
| has_pending_begin_frame_ = false;
|
| }
|
|
|
| +void Scheduler::DrawAndReadback() {
|
| + DrawSwapReadbackResult result = client_->ScheduledActionDrawAndReadback();
|
| + DCHECK(!result.did_swap);
|
| +}
|
| +
|
| void Scheduler::ProcessScheduledActions() {
|
| // We do not allow ProcessScheduledActions to be recursive.
|
| // The top-level call will iteratively execute the next action for us anyway.
|
| @@ -202,6 +201,7 @@ void Scheduler::ProcessScheduledActions() {
|
|
|
| SchedulerStateMachine::Action action;
|
| do {
|
| + state_machine_.CheckInvariants();
|
| action = state_machine_.NextAction();
|
| TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler"),
|
| "SchedulerStateMachine",
|
| @@ -223,16 +223,19 @@ void Scheduler::ProcessScheduledActions() {
|
| case SchedulerStateMachine::ACTION_ACTIVATE_PENDING_TREE:
|
| client_->ScheduledActionActivatePendingTree();
|
| break;
|
| - case SchedulerStateMachine::ACTION_DRAW_IF_POSSIBLE:
|
| + case SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE:
|
| DrawAndSwapIfPossible();
|
| break;
|
| - case SchedulerStateMachine::ACTION_DRAW_FORCED:
|
| + case SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED:
|
| DrawAndSwapForced();
|
| 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_DRAW_AND_READBACK:
|
| + DrawAndReadback();
|
| + break;
|
| case SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION:
|
| client_->ScheduledActionBeginOutputSurfaceCreation();
|
| break;
|
|
|