| 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 |