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 #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/debug/trace_event_argument.h" | 10 #include "base/debug/trace_event_argument.h" |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 begin_impl_frame_args_.deadline); | 267 begin_impl_frame_args_.deadline); |
268 int64 intervals = 1 + ((now - timebase) / begin_impl_frame_args_.interval); | 268 int64 intervals = 1 + ((now - timebase) / begin_impl_frame_args_.interval); |
269 return timebase + (begin_impl_frame_args_.interval * intervals); | 269 return timebase + (begin_impl_frame_args_.interval * intervals); |
270 } | 270 } |
271 | 271 |
272 base::TimeTicks Scheduler::LastBeginImplFrameTime() { | 272 base::TimeTicks Scheduler::LastBeginImplFrameTime() { |
273 return begin_impl_frame_args_.frame_time; | 273 return begin_impl_frame_args_.frame_time; |
274 } | 274 } |
275 | 275 |
276 void Scheduler::SetupNextBeginFrameIfNeeded() { | 276 void Scheduler::SetupNextBeginFrameIfNeeded() { |
277 if (!task_runner_) | 277 if (!task_runner_.get()) |
278 return; | 278 return; |
279 | 279 |
280 bool needs_begin_frame = state_machine_.BeginFrameNeeded(); | 280 bool needs_begin_frame = state_machine_.BeginFrameNeeded(); |
281 | 281 |
282 if (settings_.throttle_frame_production) { | 282 if (settings_.throttle_frame_production) { |
283 SetupNextBeginFrameWhenVSyncThrottlingEnabled(needs_begin_frame); | 283 SetupNextBeginFrameWhenVSyncThrottlingEnabled(needs_begin_frame); |
284 } else { | 284 } else { |
285 SetupNextBeginFrameWhenVSyncThrottlingDisabled(needs_begin_frame); | 285 SetupNextBeginFrameWhenVSyncThrottlingDisabled(needs_begin_frame); |
286 } | 286 } |
287 SetupPollingMechanisms(needs_begin_frame); | 287 SetupPollingMechanisms(needs_begin_frame); |
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
683 | 683 |
684 bool Scheduler::WillDrawIfNeeded() const { | 684 bool Scheduler::WillDrawIfNeeded() const { |
685 return !state_machine_.PendingDrawsShouldBeAborted(); | 685 return !state_machine_.PendingDrawsShouldBeAborted(); |
686 } | 686 } |
687 | 687 |
688 scoped_refptr<base::debug::ConvertableToTraceFormat> Scheduler::AsValue() | 688 scoped_refptr<base::debug::ConvertableToTraceFormat> Scheduler::AsValue() |
689 const { | 689 const { |
690 scoped_refptr<base::debug::TracedValue> state = | 690 scoped_refptr<base::debug::TracedValue> state = |
691 new base::debug::TracedValue(); | 691 new base::debug::TracedValue(); |
692 state->BeginDictionary("state_machine"); | 692 state->BeginDictionary("state_machine"); |
693 state_machine_.AsValueInto(state); | 693 state_machine_.AsValueInto(state.get()); |
694 state->EndDictionary(); | 694 state->EndDictionary(); |
695 if (synthetic_begin_frame_source_) { | 695 if (synthetic_begin_frame_source_) { |
696 state->BeginDictionary("synthetic_begin_frame_source_"); | 696 state->BeginDictionary("synthetic_begin_frame_source_"); |
697 synthetic_begin_frame_source_->AsValueInto(state); | 697 synthetic_begin_frame_source_->AsValueInto(state.get()); |
698 state->EndDictionary(); | 698 state->EndDictionary(); |
699 } | 699 } |
700 | 700 |
701 state->BeginDictionary("scheduler_state"); | 701 state->BeginDictionary("scheduler_state"); |
702 state->SetDouble( | 702 state->SetDouble( |
703 "time_until_anticipated_draw_time_ms", | 703 "time_until_anticipated_draw_time_ms", |
704 (AnticipatedDrawTime() - base::TimeTicks::Now()).InMillisecondsF()); | 704 (AnticipatedDrawTime() - base::TimeTicks::Now()).InMillisecondsF()); |
705 state->SetDouble("vsync_interval_ms", vsync_interval_.InMillisecondsF()); | 705 state->SetDouble("vsync_interval_ms", vsync_interval_.InMillisecondsF()); |
706 state->SetDouble("estimated_parent_draw_time_ms", | 706 state->SetDouble("estimated_parent_draw_time_ms", |
707 estimated_parent_draw_time_.InMillisecondsF()); | 707 estimated_parent_draw_time_.InMillisecondsF()); |
708 state->SetBoolean("last_set_needs_begin_frame_", last_set_needs_begin_frame_); | 708 state->SetBoolean("last_set_needs_begin_frame_", last_set_needs_begin_frame_); |
709 state->SetBoolean("begin_unthrottled_frame_posted_", | 709 state->SetBoolean("begin_unthrottled_frame_posted_", |
710 begin_unthrottled_frame_posted_); | 710 begin_unthrottled_frame_posted_); |
711 state->SetBoolean("begin_retro_frame_posted_", begin_retro_frame_posted_); | 711 state->SetBoolean("begin_retro_frame_posted_", begin_retro_frame_posted_); |
712 state->SetInteger("begin_retro_frame_args_", begin_retro_frame_args_.size()); | 712 state->SetInteger("begin_retro_frame_args_", begin_retro_frame_args_.size()); |
713 state->SetBoolean("begin_impl_frame_deadline_task_", | 713 state->SetBoolean("begin_impl_frame_deadline_task_", |
714 !begin_impl_frame_deadline_task_.IsCancelled()); | 714 !begin_impl_frame_deadline_task_.IsCancelled()); |
715 state->SetBoolean("poll_for_draw_triggers_task_", | 715 state->SetBoolean("poll_for_draw_triggers_task_", |
716 !poll_for_draw_triggers_task_.IsCancelled()); | 716 !poll_for_draw_triggers_task_.IsCancelled()); |
717 state->SetBoolean("advance_commit_state_task_", | 717 state->SetBoolean("advance_commit_state_task_", |
718 !advance_commit_state_task_.IsCancelled()); | 718 !advance_commit_state_task_.IsCancelled()); |
719 state->BeginDictionary("begin_impl_frame_args"); | 719 state->BeginDictionary("begin_impl_frame_args"); |
720 begin_impl_frame_args_.AsValueInto(state); | 720 begin_impl_frame_args_.AsValueInto(state.get()); |
721 state->EndDictionary(); | 721 state->EndDictionary(); |
722 | 722 |
723 state->EndDictionary(); | 723 state->EndDictionary(); |
724 | 724 |
725 state->BeginDictionary("client_state"); | 725 state->BeginDictionary("client_state"); |
726 state->SetDouble("draw_duration_estimate_ms", | 726 state->SetDouble("draw_duration_estimate_ms", |
727 client_->DrawDurationEstimate().InMillisecondsF()); | 727 client_->DrawDurationEstimate().InMillisecondsF()); |
728 state->SetDouble( | 728 state->SetDouble( |
729 "begin_main_frame_to_commit_duration_estimate_ms", | 729 "begin_main_frame_to_commit_duration_estimate_ms", |
730 client_->BeginMainFrameToCommitDurationEstimate().InMillisecondsF()); | 730 client_->BeginMainFrameToCommitDurationEstimate().InMillisecondsF()); |
(...skipping 24 matching lines...) Expand all Loading... |
755 } | 755 } |
756 | 756 |
757 bool Scheduler::IsBeginMainFrameSentOrStarted() const { | 757 bool Scheduler::IsBeginMainFrameSentOrStarted() const { |
758 return (state_machine_.commit_state() == | 758 return (state_machine_.commit_state() == |
759 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT || | 759 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT || |
760 state_machine_.commit_state() == | 760 state_machine_.commit_state() == |
761 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_STARTED); | 761 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_STARTED); |
762 } | 762 } |
763 | 763 |
764 } // namespace cc | 764 } // namespace cc |
OLD | NEW |