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

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

Issue 1265023005: cc: Add SchedulerStateMachine::DidDraw and use for forced draws (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@WillDidAction0
Patch Set: Sunny's comments Created 5 years 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
« no previous file with comments | « cc/scheduler/draw_result.h ('k') | cc/scheduler/scheduler_state_machine.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is fixed. 639 // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is fixed.
640 tracked_objects::ScopedTracker tracking_profile1( 640 tracked_objects::ScopedTracker tracking_profile1(
641 FROM_HERE_WITH_EXPLICIT_FUNCTION( 641 FROM_HERE_WITH_EXPLICIT_FUNCTION(
642 "461509 Scheduler::OnBeginImplFrameDeadline1")); 642 "461509 Scheduler::OnBeginImplFrameDeadline1"));
643 state_machine_.OnBeginImplFrameDeadline(); 643 state_machine_.OnBeginImplFrameDeadline();
644 ProcessScheduledActions(); 644 ProcessScheduledActions();
645 FinishImplFrame(); 645 FinishImplFrame();
646 } 646 }
647 647
648 void Scheduler::DrawAndSwapIfPossible() { 648 void Scheduler::DrawAndSwapIfPossible() {
649 state_machine_.WillDraw();
649 compositor_timing_history_->WillDraw(); 650 compositor_timing_history_->WillDraw();
650 DrawResult result = client_->ScheduledActionDrawAndSwapIfPossible(); 651 DrawResult result = client_->ScheduledActionDrawAndSwapIfPossible();
651 state_machine_.DidDrawIfPossibleCompleted(result);
652 compositor_timing_history_->DidDraw(); 652 compositor_timing_history_->DidDraw();
653 state_machine_.DidDraw(result);
653 } 654 }
654 655
655 void Scheduler::DrawAndSwapForced() { 656 void Scheduler::DrawAndSwapForced() {
657 state_machine_.WillDraw();
656 compositor_timing_history_->WillDraw(); 658 compositor_timing_history_->WillDraw();
657 client_->ScheduledActionDrawAndSwapForced(); 659 DrawResult result = client_->ScheduledActionDrawAndSwapForced();
658 compositor_timing_history_->DidDraw(); 660 compositor_timing_history_->DidDraw();
661 state_machine_.DidDraw(result);
659 } 662 }
660 663
661 void Scheduler::SetDeferCommits(bool defer_commits) { 664 void Scheduler::SetDeferCommits(bool defer_commits) {
662 TRACE_EVENT1("cc", "Scheduler::SetDeferCommits", 665 TRACE_EVENT1("cc", "Scheduler::SetDeferCommits",
663 "defer_commits", 666 "defer_commits",
664 defer_commits); 667 defer_commits);
665 state_machine_.SetDeferCommits(defer_commits); 668 state_machine_.SetDeferCommits(defer_commits);
666 ProcessScheduledActions(); 669 ProcessScheduledActions();
667 } 670 }
668 671
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
713 state_machine_.WillActivate(); 716 state_machine_.WillActivate();
714 client_->ScheduledActionActivateSyncTree(); 717 client_->ScheduledActionActivateSyncTree();
715 compositor_timing_history_->DidActivate(); 718 compositor_timing_history_->DidActivate();
716 break; 719 break;
717 case SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE: { 720 case SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE: {
718 // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is 721 // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is
719 // fixed. 722 // fixed.
720 tracked_objects::ScopedTracker tracking_profile6( 723 tracked_objects::ScopedTracker tracking_profile6(
721 FROM_HERE_WITH_EXPLICIT_FUNCTION( 724 FROM_HERE_WITH_EXPLICIT_FUNCTION(
722 "461509 Scheduler::ProcessScheduledActions6")); 725 "461509 Scheduler::ProcessScheduledActions6"));
723 bool did_request_swap = true;
724 state_machine_.WillDraw(did_request_swap);
725 DrawAndSwapIfPossible(); 726 DrawAndSwapIfPossible();
726 break; 727 break;
727 } 728 }
728 case SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED: { 729 case SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED:
729 bool did_request_swap = true;
730 state_machine_.WillDraw(did_request_swap);
731 DrawAndSwapForced(); 730 DrawAndSwapForced();
732 break; 731 break;
733 }
734 case SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT: { 732 case SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT: {
735 // No action is actually performed, but this allows the state machine to 733 // No action is actually performed, but this allows the state machine to
736 // advance out of its waiting to draw state without actually drawing. 734 // drain the pipeline without actually drawing.
737 bool did_request_swap = false; 735 state_machine_.AbortDrawAndSwap();
738 state_machine_.WillDraw(did_request_swap);
739 break; 736 break;
740 } 737 }
741 case SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION: 738 case SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION:
742 state_machine_.WillBeginOutputSurfaceCreation(); 739 state_machine_.WillBeginOutputSurfaceCreation();
743 client_->ScheduledActionBeginOutputSurfaceCreation(); 740 client_->ScheduledActionBeginOutputSurfaceCreation();
744 break; 741 break;
745 case SchedulerStateMachine::ACTION_PREPARE_TILES: 742 case SchedulerStateMachine::ACTION_PREPARE_TILES:
746 state_machine_.WillPrepareTiles(); 743 state_machine_.WillPrepareTiles();
747 client_->ScheduledActionPrepareTiles(); 744 client_->ScheduledActionPrepareTiles();
748 break; 745 break;
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
889 } 886 }
890 887
891 bool Scheduler::IsBeginMainFrameSentOrStarted() const { 888 bool Scheduler::IsBeginMainFrameSentOrStarted() const {
892 return (state_machine_.begin_main_frame_state() == 889 return (state_machine_.begin_main_frame_state() ==
893 SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_SENT || 890 SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_SENT ||
894 state_machine_.begin_main_frame_state() == 891 state_machine_.begin_main_frame_state() ==
895 SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_STARTED); 892 SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_STARTED);
896 } 893 }
897 894
898 } // namespace cc 895 } // namespace cc
OLDNEW
« no previous file with comments | « cc/scheduler/draw_result.h ('k') | cc/scheduler/scheduler_state_machine.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698