Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1419)

Side by Side Diff: cc/scheduler/scheduler.cc

Issue 246753008: cc: Unify use of DidSwapBuffers() and did_request_swap (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/scheduler/scheduler.h" 5 #include "cc/scheduler/scheduler.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include "base/auto_reset.h" 8 #include "base/auto_reset.h"
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 state_machine_.SetNeedsManageTiles(); 91 state_machine_.SetNeedsManageTiles();
92 ProcessScheduledActions(); 92 ProcessScheduledActions();
93 } 93 }
94 94
95 void Scheduler::SetMaxSwapsPending(int max) { 95 void Scheduler::SetMaxSwapsPending(int max) {
96 state_machine_.SetMaxSwapsPending(max); 96 state_machine_.SetMaxSwapsPending(max);
97 } 97 }
98 98
99 void Scheduler::DidSwapBuffers() { 99 void Scheduler::DidSwapBuffers() {
100 state_machine_.DidSwapBuffers(); 100 state_machine_.DidSwapBuffers();
101
102 // Swap should not occur by readback operation.
103 DCHECK(!IsInsideAction(SchedulerStateMachine::ACTION_DRAW_AND_READBACK));
brianderson 2014/04/24 01:54:15 Can you move this DCHECK into the state machine? I
simonhong 2014/04/25 01:13:37 I tried but i think checking this condition in sta
104
101 // There is no need to call ProcessScheduledActions here because 105 // There is no need to call ProcessScheduledActions here because
102 // swapping should not trigger any new actions. 106 // swapping should not trigger any new actions.
103 if (!inside_process_scheduled_actions_) { 107 if (!inside_process_scheduled_actions_) {
104 DCHECK_EQ(state_machine_.NextAction(), SchedulerStateMachine::ACTION_NONE); 108 DCHECK_EQ(state_machine_.NextAction(), SchedulerStateMachine::ACTION_NONE);
105 } 109 }
106 } 110 }
107 111
108 void Scheduler::SetSwapUsedIncompleteTile(bool used_incomplete_tile) { 112 void Scheduler::SetSwapUsedIncompleteTile(bool used_incomplete_tile) {
109 state_machine_.SetSwapUsedIncompleteTile(used_incomplete_tile); 113 state_machine_.SetSwapUsedIncompleteTile(used_incomplete_tile);
110 ProcessScheduledActions(); 114 ProcessScheduledActions();
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 DrawSwapReadbackResult result = 447 DrawSwapReadbackResult result =
444 client_->ScheduledActionDrawAndSwapIfPossible(); 448 client_->ScheduledActionDrawAndSwapIfPossible();
445 state_machine_.DidDrawIfPossibleCompleted(result.draw_result); 449 state_machine_.DidDrawIfPossibleCompleted(result.draw_result);
446 } 450 }
447 451
448 void Scheduler::DrawAndSwapForced() { 452 void Scheduler::DrawAndSwapForced() {
449 client_->ScheduledActionDrawAndSwapForced(); 453 client_->ScheduledActionDrawAndSwapForced();
450 } 454 }
451 455
452 void Scheduler::DrawAndReadback() { 456 void Scheduler::DrawAndReadback() {
453 DrawSwapReadbackResult result = client_->ScheduledActionDrawAndReadback(); 457 client_->ScheduledActionDrawAndReadback();
454 DCHECK(!result.did_request_swap);
455 } 458 }
456 459
457 void Scheduler::ProcessScheduledActions() { 460 void Scheduler::ProcessScheduledActions() {
458 // We do not allow ProcessScheduledActions to be recursive. 461 // We do not allow ProcessScheduledActions to be recursive.
459 // The top-level call will iteratively execute the next action for us anyway. 462 // The top-level call will iteratively execute the next action for us anyway.
460 if (inside_process_scheduled_actions_) 463 if (inside_process_scheduled_actions_)
461 return; 464 return;
462 465
463 base::AutoReset<bool> mark_inside(&inside_process_scheduled_actions_, true); 466 base::AutoReset<bool> mark_inside(&inside_process_scheduled_actions_, true);
464 467
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 } 577 }
575 578
576 bool Scheduler::IsBeginMainFrameSentOrStarted() const { 579 bool Scheduler::IsBeginMainFrameSentOrStarted() const {
577 return (state_machine_.commit_state() == 580 return (state_machine_.commit_state() ==
578 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT || 581 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT ||
579 state_machine_.commit_state() == 582 state_machine_.commit_state() ==
580 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_STARTED); 583 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_STARTED);
581 } 584 }
582 585
583 } // namespace cc 586 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698