OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "components/scheduler/renderer/renderer_scheduler_impl.h" | 5 #include "components/scheduler/renderer/renderer_scheduler_impl.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/debug/stack_trace.h" | 8 #include "base/debug/stack_trace.h" |
9 #include "base/trace_event/trace_event.h" | 9 #include "base/trace_event/trace_event.h" |
10 #include "base/trace_event/trace_event_argument.h" | 10 #include "base/trace_event/trace_event_argument.h" |
(...skipping 23 matching lines...) Expand all Loading... |
34 timer_task_runner_(helper_.TaskRunnerForQueue(TIMER_TASK_QUEUE)), | 34 timer_task_runner_(helper_.TaskRunnerForQueue(TIMER_TASK_QUEUE)), |
35 delayed_update_policy_runner_( | 35 delayed_update_policy_runner_( |
36 base::Bind(&RendererSchedulerImpl::UpdatePolicy, | 36 base::Bind(&RendererSchedulerImpl::UpdatePolicy, |
37 base::Unretained(this)), | 37 base::Unretained(this)), |
38 helper_.ControlTaskRunner()), | 38 helper_.ControlTaskRunner()), |
39 current_policy_(Policy::NORMAL), | 39 current_policy_(Policy::NORMAL), |
40 renderer_hidden_(false), | 40 renderer_hidden_(false), |
41 was_shutdown_(false), | 41 was_shutdown_(false), |
42 pending_main_thread_input_event_count_(0), | 42 pending_main_thread_input_event_count_(0), |
43 awaiting_touch_start_response_(false), | 43 awaiting_touch_start_response_(false), |
| 44 begin_main_frame_on_critical_path_(false), |
44 last_input_type_(blink::WebInputEvent::Undefined), | 45 last_input_type_(blink::WebInputEvent::Undefined), |
45 policy_may_need_update_(&incoming_signals_lock_), | 46 policy_may_need_update_(&incoming_signals_lock_), |
46 timer_queue_suspend_count_(0), | 47 timer_queue_suspend_count_(0), |
47 in_idle_period_(false), | 48 in_idle_period_(false), |
48 weak_factory_(this) { | 49 weak_factory_(this) { |
49 update_policy_closure_ = base::Bind(&RendererSchedulerImpl::UpdatePolicy, | 50 update_policy_closure_ = base::Bind(&RendererSchedulerImpl::UpdatePolicy, |
50 weak_factory_.GetWeakPtr()); | 51 weak_factory_.GetWeakPtr()); |
51 end_renderer_hidden_idle_period_closure_.Reset(base::Bind( | 52 end_renderer_hidden_idle_period_closure_.Reset(base::Bind( |
52 &RendererSchedulerImpl::EndIdlePeriod, weak_factory_.GetWeakPtr())); | 53 &RendererSchedulerImpl::EndIdlePeriod, weak_factory_.GetWeakPtr())); |
53 | 54 |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 | 120 |
120 void RendererSchedulerImpl::WillBeginFrame(const cc::BeginFrameArgs& args) { | 121 void RendererSchedulerImpl::WillBeginFrame(const cc::BeginFrameArgs& args) { |
121 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), | 122 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), |
122 "RendererSchedulerImpl::WillBeginFrame", "args", args.AsValue()); | 123 "RendererSchedulerImpl::WillBeginFrame", "args", args.AsValue()); |
123 helper_.CheckOnValidThread(); | 124 helper_.CheckOnValidThread(); |
124 if (helper_.IsShutdown()) | 125 if (helper_.IsShutdown()) |
125 return; | 126 return; |
126 | 127 |
127 EndIdlePeriod(); | 128 EndIdlePeriod(); |
128 estimated_next_frame_begin_ = args.frame_time + args.interval; | 129 estimated_next_frame_begin_ = args.frame_time + args.interval; |
| 130 begin_main_frame_on_critical_path_ = args.on_critical_path; |
129 } | 131 } |
130 | 132 |
131 void RendererSchedulerImpl::DidCommitFrameToCompositor() { | 133 void RendererSchedulerImpl::DidCommitFrameToCompositor() { |
132 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), | 134 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), |
133 "RendererSchedulerImpl::DidCommitFrameToCompositor"); | 135 "RendererSchedulerImpl::DidCommitFrameToCompositor"); |
134 helper_.CheckOnValidThread(); | 136 helper_.CheckOnValidThread(); |
135 if (helper_.IsShutdown()) | 137 if (helper_.IsShutdown()) |
136 return; | 138 return; |
137 | 139 |
138 base::TimeTicks now(helper_.Now()); | 140 base::TimeTicks now(helper_.Now()); |
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
585 idle_helper_.SchedulerIdlePeriodState())); | 587 idle_helper_.SchedulerIdlePeriodState())); |
586 state->SetBoolean("renderer_hidden", renderer_hidden_); | 588 state->SetBoolean("renderer_hidden", renderer_hidden_); |
587 state->SetDouble("now", (optional_now - base::TimeTicks()).InMillisecondsF()); | 589 state->SetDouble("now", (optional_now - base::TimeTicks()).InMillisecondsF()); |
588 state->SetDouble( | 590 state->SetDouble( |
589 "last_input_signal_time", | 591 "last_input_signal_time", |
590 (last_input_signal_time_ - base::TimeTicks()).InMillisecondsF()); | 592 (last_input_signal_time_ - base::TimeTicks()).InMillisecondsF()); |
591 state->SetInteger("pending_main_thread_input_event_count", | 593 state->SetInteger("pending_main_thread_input_event_count", |
592 pending_main_thread_input_event_count_); | 594 pending_main_thread_input_event_count_); |
593 state->SetBoolean("awaiting_touch_start_response", | 595 state->SetBoolean("awaiting_touch_start_response", |
594 awaiting_touch_start_response_); | 596 awaiting_touch_start_response_); |
| 597 state->SetBoolean("begin_main_frame_on_critical_path", |
| 598 begin_main_frame_on_critical_path_); |
595 state->SetDouble( | 599 state->SetDouble( |
596 "estimated_next_frame_begin", | 600 "estimated_next_frame_begin", |
597 (estimated_next_frame_begin_ - base::TimeTicks()).InMillisecondsF()); | 601 (estimated_next_frame_begin_ - base::TimeTicks()).InMillisecondsF()); |
598 state->SetBoolean("in_idle_period", in_idle_period_); | 602 state->SetBoolean("in_idle_period", in_idle_period_); |
599 | 603 |
600 return state; | 604 return state; |
601 } | 605 } |
602 | 606 |
603 void RendererSchedulerImpl::OnIdlePeriodStarted() { | 607 void RendererSchedulerImpl::OnIdlePeriodStarted() { |
604 in_idle_period_ = true; | 608 in_idle_period_ = true; |
605 // TODO(alexclarke): Force update the policy | 609 // TODO(alexclarke): Force update the policy |
606 } | 610 } |
607 | 611 |
608 void RendererSchedulerImpl::OnIdlePeriodEnded() { | 612 void RendererSchedulerImpl::OnIdlePeriodEnded() { |
609 in_idle_period_ = false; | 613 in_idle_period_ = false; |
610 // TODO(alexclarke): Force update the policy | 614 // TODO(alexclarke): Force update the policy |
611 } | 615 } |
612 | 616 |
613 } // namespace scheduler | 617 } // namespace scheduler |
OLD | NEW |