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 646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
657 compositor_timing_history_->WillFinishImplFrame( | 657 compositor_timing_history_->WillFinishImplFrame( |
658 state_machine_.needs_redraw()); | 658 state_machine_.needs_redraw()); |
659 state_machine_.OnBeginImplFrameDeadline(); | 659 state_machine_.OnBeginImplFrameDeadline(); |
660 ProcessScheduledActions(); | 660 ProcessScheduledActions(); |
661 FinishImplFrame(); | 661 FinishImplFrame(); |
662 } | 662 } |
663 | 663 |
664 void Scheduler::DrawAndSwapIfPossible() { | 664 void Scheduler::DrawAndSwapIfPossible() { |
665 bool drawing_with_new_active_tree = | 665 bool drawing_with_new_active_tree = |
666 state_machine_.active_tree_needs_first_draw(); | 666 state_machine_.active_tree_needs_first_draw(); |
| 667 bool main_thread_missed_last_deadline = |
| 668 state_machine_.main_thread_missed_last_deadline(); |
667 compositor_timing_history_->WillDraw(); | 669 compositor_timing_history_->WillDraw(); |
668 state_machine_.WillDraw(); | 670 state_machine_.WillDraw(); |
669 DrawResult result = client_->ScheduledActionDrawAndSwapIfPossible(); | 671 DrawResult result = client_->ScheduledActionDrawAndSwapIfPossible(); |
670 state_machine_.DidDraw(result); | 672 state_machine_.DidDraw(result); |
671 compositor_timing_history_->DidDraw(drawing_with_new_active_tree); | 673 compositor_timing_history_->DidDraw( |
| 674 drawing_with_new_active_tree, main_thread_missed_last_deadline, |
| 675 begin_impl_frame_tracker_.DangerousMethodCurrentOrLast().frame_time); |
672 } | 676 } |
673 | 677 |
674 void Scheduler::DrawAndSwapForced() { | 678 void Scheduler::DrawAndSwapForced() { |
675 bool drawing_with_new_active_tree = | 679 bool drawing_with_new_active_tree = |
676 state_machine_.active_tree_needs_first_draw(); | 680 state_machine_.active_tree_needs_first_draw(); |
| 681 bool main_thread_missed_last_deadline = |
| 682 state_machine_.main_thread_missed_last_deadline(); |
677 compositor_timing_history_->WillDraw(); | 683 compositor_timing_history_->WillDraw(); |
678 state_machine_.WillDraw(); | 684 state_machine_.WillDraw(); |
679 DrawResult result = client_->ScheduledActionDrawAndSwapForced(); | 685 DrawResult result = client_->ScheduledActionDrawAndSwapForced(); |
680 state_machine_.DidDraw(result); | 686 state_machine_.DidDraw(result); |
681 compositor_timing_history_->DidDraw(drawing_with_new_active_tree); | 687 compositor_timing_history_->DidDraw( |
| 688 drawing_with_new_active_tree, main_thread_missed_last_deadline, |
| 689 begin_impl_frame_tracker_.DangerousMethodCurrentOrLast().frame_time); |
682 } | 690 } |
683 | 691 |
684 void Scheduler::SetDeferCommits(bool defer_commits) { | 692 void Scheduler::SetDeferCommits(bool defer_commits) { |
685 TRACE_EVENT1("cc", "Scheduler::SetDeferCommits", | 693 TRACE_EVENT1("cc", "Scheduler::SetDeferCommits", |
686 "defer_commits", | 694 "defer_commits", |
687 defer_commits); | 695 defer_commits); |
688 state_machine_.SetDeferCommits(defer_commits); | 696 state_machine_.SetDeferCommits(defer_commits); |
689 ProcessScheduledActions(); | 697 ProcessScheduledActions(); |
690 } | 698 } |
691 | 699 |
(...skipping 12 matching lines...) Expand all Loading... |
704 "SchedulerStateMachine", | 712 "SchedulerStateMachine", |
705 "state", | 713 "state", |
706 AsValue()); | 714 AsValue()); |
707 base::AutoReset<SchedulerStateMachine::Action> | 715 base::AutoReset<SchedulerStateMachine::Action> |
708 mark_inside_action(&inside_action_, action); | 716 mark_inside_action(&inside_action_, action); |
709 switch (action) { | 717 switch (action) { |
710 case SchedulerStateMachine::ACTION_NONE: | 718 case SchedulerStateMachine::ACTION_NONE: |
711 break; | 719 break; |
712 case SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME: | 720 case SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME: |
713 compositor_timing_history_->WillBeginMainFrame( | 721 compositor_timing_history_->WillBeginMainFrame( |
714 begin_main_frame_args_.on_critical_path); | 722 begin_main_frame_args_.on_critical_path, |
| 723 begin_main_frame_args_.frame_time); |
715 state_machine_.WillSendBeginMainFrame(); | 724 state_machine_.WillSendBeginMainFrame(); |
716 // TODO(brianderson): Pass begin_main_frame_args_ directly to client. | 725 // TODO(brianderson): Pass begin_main_frame_args_ directly to client. |
717 client_->ScheduledActionSendBeginMainFrame(begin_main_frame_args_); | 726 client_->ScheduledActionSendBeginMainFrame(begin_main_frame_args_); |
718 break; | 727 break; |
719 case SchedulerStateMachine::ACTION_COMMIT: { | 728 case SchedulerStateMachine::ACTION_COMMIT: { |
720 // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is | 729 // TODO(robliao): Remove ScopedTracker below once crbug.com/461509 is |
721 // fixed. | 730 // fixed. |
722 tracked_objects::ScopedTracker tracking_profile4( | 731 tracked_objects::ScopedTracker tracking_profile4( |
723 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 732 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
724 "461509 Scheduler::ProcessScheduledActions4")); | 733 "461509 Scheduler::ProcessScheduledActions4")); |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
902 } | 911 } |
903 | 912 |
904 bool Scheduler::IsBeginMainFrameSentOrStarted() const { | 913 bool Scheduler::IsBeginMainFrameSentOrStarted() const { |
905 return (state_machine_.begin_main_frame_state() == | 914 return (state_machine_.begin_main_frame_state() == |
906 SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_SENT || | 915 SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_SENT || |
907 state_machine_.begin_main_frame_state() == | 916 state_machine_.begin_main_frame_state() == |
908 SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_STARTED); | 917 SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_STARTED); |
909 } | 918 } |
910 | 919 |
911 } // namespace cc | 920 } // namespace cc |
OLD | NEW |