OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |