| 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 716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 727 | 727 |
| 728 SetupPollingMechanisms(); | 728 SetupPollingMechanisms(); |
| 729 | 729 |
| 730 client_->DidAnticipatedDrawTimeChange(AnticipatedDrawTime()); | 730 client_->DidAnticipatedDrawTimeChange(AnticipatedDrawTime()); |
| 731 | 731 |
| 732 RescheduleBeginImplFrameDeadlineIfNeeded(); | 732 RescheduleBeginImplFrameDeadlineIfNeeded(); |
| 733 | 733 |
| 734 SetupNextBeginFrameIfNeeded(); | 734 SetupNextBeginFrameIfNeeded(); |
| 735 } | 735 } |
| 736 | 736 |
| 737 scoped_refptr<base::trace_event::ConvertableToTraceFormat> Scheduler::AsValue() | 737 scoped_refptr<base::trace_event::ConvertableToTraceFormat> |
| 738 const { | 738 Scheduler::AsValue() { |
| 739 scoped_refptr<base::trace_event::TracedValue> state = | 739 scoped_refptr<base::trace_event::TracedValue> state = |
| 740 new base::trace_event::TracedValue(); | 740 new base::trace_event::TracedValue(); |
| 741 AsValueInto(state.get()); | 741 AsValueInto(state.get()); |
| 742 return state; | 742 return state; |
| 743 } | 743 } |
| 744 | 744 |
| 745 void Scheduler::AsValueInto(base::trace_event::TracedValue* state) const { | 745 void Scheduler::AsValueInto(base::trace_event::TracedValue* state) { |
| 746 state->BeginDictionary("state_machine"); | 746 state->BeginDictionary("state_machine"); |
| 747 state_machine_.AsValueInto(state); | 747 state_machine_.AsValueInto(state); |
| 748 state->EndDictionary(); | 748 state->EndDictionary(); |
| 749 | 749 |
| 750 // Only trace frame sources when explicitly enabled - http://crbug.com/420607 | 750 // Only trace frame sources when explicitly enabled - http://crbug.com/420607 |
| 751 bool frame_tracing_enabled = false; | 751 bool frame_tracing_enabled = false; |
| 752 TRACE_EVENT_CATEGORY_GROUP_ENABLED( | 752 TRACE_EVENT_CATEGORY_GROUP_ENABLED( |
| 753 TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler.frames"), | 753 TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler.frames"), |
| 754 &frame_tracing_enabled); | 754 &frame_tracing_enabled); |
| 755 if (frame_tracing_enabled) { | 755 if (frame_tracing_enabled) { |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 802 client_->DrawDurationEstimate().InMillisecondsF()); | 802 client_->DrawDurationEstimate().InMillisecondsF()); |
| 803 state->SetDouble( | 803 state->SetDouble( |
| 804 "begin_main_frame_to_commit_duration_estimate_ms", | 804 "begin_main_frame_to_commit_duration_estimate_ms", |
| 805 client_->BeginMainFrameToCommitDurationEstimate().InMillisecondsF()); | 805 client_->BeginMainFrameToCommitDurationEstimate().InMillisecondsF()); |
| 806 state->SetDouble( | 806 state->SetDouble( |
| 807 "commit_to_activate_duration_estimate_ms", | 807 "commit_to_activate_duration_estimate_ms", |
| 808 client_->CommitToActivateDurationEstimate().InMillisecondsF()); | 808 client_->CommitToActivateDurationEstimate().InMillisecondsF()); |
| 809 state->EndDictionary(); | 809 state->EndDictionary(); |
| 810 } | 810 } |
| 811 | 811 |
| 812 bool Scheduler::CanCommitAndActivateBeforeDeadline() const { | 812 bool Scheduler::CanCommitAndActivateBeforeDeadline() { |
| 813 // Check if the main thread computation and commit can be finished before the | 813 // Check if the main thread computation and commit can be finished before the |
| 814 // impl thread's deadline. | 814 // impl thread's deadline. |
| 815 base::TimeTicks estimated_draw_time = | 815 base::TimeTicks estimated_draw_time = |
| 816 begin_impl_frame_args_.frame_time + | 816 begin_impl_frame_args_.frame_time + |
| 817 client_->BeginMainFrameToCommitDurationEstimate() + | 817 client_->BeginMainFrameToCommitDurationEstimate() + |
| 818 client_->CommitToActivateDurationEstimate(); | 818 client_->CommitToActivateDurationEstimate(); |
| 819 | 819 |
| 820 TRACE_EVENT2( | 820 TRACE_EVENT2( |
| 821 TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler"), | 821 TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler"), |
| 822 "CanCommitAndActivateBeforeDeadline", | 822 "CanCommitAndActivateBeforeDeadline", |
| 823 "time_left_after_drawing_ms", | 823 "time_left_after_drawing_ms", |
| 824 (begin_impl_frame_args_.deadline - estimated_draw_time).InMillisecondsF(), | 824 (begin_impl_frame_args_.deadline - estimated_draw_time).InMillisecondsF(), |
| 825 "state", | 825 "state", |
| 826 AsValue()); | 826 AsValue()); |
| 827 | 827 |
| 828 return estimated_draw_time < begin_impl_frame_args_.deadline; | 828 return estimated_draw_time < begin_impl_frame_args_.deadline; |
| 829 } | 829 } |
| 830 | 830 |
| 831 bool Scheduler::IsBeginMainFrameSentOrStarted() const { | 831 bool Scheduler::IsBeginMainFrameSentOrStarted() const { |
| 832 return (state_machine_.commit_state() == | 832 return (state_machine_.commit_state() == |
| 833 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT || | 833 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT || |
| 834 state_machine_.commit_state() == | 834 state_machine_.commit_state() == |
| 835 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_STARTED); | 835 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_STARTED); |
| 836 } | 836 } |
| 837 | 837 |
| 838 } // namespace cc | 838 } // namespace cc |
| OLD | NEW |