| Index: cc/scheduler/scheduler.cc
|
| diff --git a/cc/scheduler/scheduler.cc b/cc/scheduler/scheduler.cc
|
| index 9345561f7dd379c69bba874bfa41667d7bf30c83..7dea30268b573c3826460194b918d977c294d831 100644
|
| --- a/cc/scheduler/scheduler.cc
|
| +++ b/cc/scheduler/scheduler.cc
|
| @@ -195,6 +195,10 @@ void Scheduler::SetMaxSwapsPending(int max) {
|
|
|
| void Scheduler::DidSwapBuffers() {
|
| state_machine_.DidSwapBuffers();
|
| +
|
| + // Swap should not occur inside readback operation.
|
| + DCHECK(!IsInsideAction(SchedulerStateMachine::ACTION_DRAW_AND_READBACK));
|
| +
|
| // There is no need to call ProcessScheduledActions here because
|
| // swapping should not trigger any new actions.
|
| if (!inside_process_scheduled_actions_) {
|
| @@ -604,18 +608,8 @@ bool Scheduler::IsBeginMainFrameSent() const {
|
| }
|
|
|
| void Scheduler::DrawAndSwapIfPossible() {
|
| - DrawSwapReadbackResult result =
|
| - client_->ScheduledActionDrawAndSwapIfPossible();
|
| - state_machine_.DidDrawIfPossibleCompleted(result.draw_result);
|
| -}
|
| -
|
| -void Scheduler::DrawAndSwapForced() {
|
| - client_->ScheduledActionDrawAndSwapForced();
|
| -}
|
| -
|
| -void Scheduler::DrawAndReadback() {
|
| - DrawSwapReadbackResult result = client_->ScheduledActionDrawAndReadback();
|
| - DCHECK(!result.did_request_swap);
|
| + DrawResult result = client_->ScheduledActionDrawAndSwapIfPossible();
|
| + state_machine_.DidDrawIfPossibleCompleted(result);
|
| }
|
|
|
| void Scheduler::ProcessScheduledActions() {
|
| @@ -659,14 +653,14 @@ void Scheduler::ProcessScheduledActions() {
|
| DrawAndSwapIfPossible();
|
| break;
|
| case SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED:
|
| - DrawAndSwapForced();
|
| + 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_DRAW_AND_READBACK:
|
| - DrawAndReadback();
|
| + client_->ScheduledActionDrawAndReadback();
|
| break;
|
| case SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION:
|
| client_->ScheduledActionBeginOutputSurfaceCreation();
|
|
|