| 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/message_loop/message_loop_proxy.h" | 8 #include "base/message_loop/message_loop_proxy.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 20 matching lines...) Expand all Loading... |
| 31 compositor_task_runner_( | 31 compositor_task_runner_( |
| 32 helper_.TaskRunnerForQueue(COMPOSITOR_TASK_QUEUE)), | 32 helper_.TaskRunnerForQueue(COMPOSITOR_TASK_QUEUE)), |
| 33 loading_task_runner_(helper_.TaskRunnerForQueue(LOADING_TASK_QUEUE)), | 33 loading_task_runner_(helper_.TaskRunnerForQueue(LOADING_TASK_QUEUE)), |
| 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 last_input_type_(blink::WebInputEvent::Undefined), | 42 last_input_type_(blink::WebInputEvent::Undefined), |
| 42 input_stream_state_(InputStreamState::INACTIVE), | 43 input_stream_state_(InputStreamState::INACTIVE), |
| 43 policy_may_need_update_(&incoming_signals_lock_), | 44 policy_may_need_update_(&incoming_signals_lock_), |
| 44 timer_queue_suspend_count_(0), | 45 timer_queue_suspend_count_(0), |
| 45 weak_factory_(this) { | 46 weak_factory_(this) { |
| 46 update_policy_closure_ = base::Bind(&RendererSchedulerImpl::UpdatePolicy, | 47 update_policy_closure_ = base::Bind(&RendererSchedulerImpl::UpdatePolicy, |
| 47 weak_factory_.GetWeakPtr()); | 48 weak_factory_.GetWeakPtr()); |
| 48 end_renderer_hidden_idle_period_closure_.Reset(base::Bind( | 49 end_renderer_hidden_idle_period_closure_.Reset(base::Bind( |
| 49 &RendererSchedulerImpl::EndIdlePeriod, weak_factory_.GetWeakPtr())); | 50 &RendererSchedulerImpl::EndIdlePeriod, weak_factory_.GetWeakPtr())); |
| 50 | 51 |
| 51 for (size_t i = SchedulerHelper::TASK_QUEUE_COUNT; i < TASK_QUEUE_COUNT; | 52 for (size_t i = SchedulerHelper::TASK_QUEUE_COUNT; i < TASK_QUEUE_COUNT; |
| 52 i++) { | 53 i++) { |
| 53 helper_.SetQueueName(i, TaskQueueIdToString(static_cast<QueueId>(i))); | 54 helper_.SetQueueName(i, TaskQueueIdToString(static_cast<QueueId>(i))); |
| 54 } | 55 } |
| 55 TRACE_EVENT_OBJECT_CREATED_WITH_ID( | 56 TRACE_EVENT_OBJECT_CREATED_WITH_ID( |
| 56 TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), "RendererScheduler", | 57 TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), "RendererScheduler", |
| 57 this); | 58 this); |
| 58 } | 59 } |
| 59 | 60 |
| 60 RendererSchedulerImpl::~RendererSchedulerImpl() { | 61 RendererSchedulerImpl::~RendererSchedulerImpl() { |
| 61 TRACE_EVENT_OBJECT_DELETED_WITH_ID( | 62 TRACE_EVENT_OBJECT_DELETED_WITH_ID( |
| 62 TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), "RendererScheduler", | 63 TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), "RendererScheduler", |
| 63 this); | 64 this); |
| 65 // Ensure the renderer scheduler was shut down explicitly, because otherwise |
| 66 // we could end up having stale pointers to the Blink heap which has been |
| 67 // terminated by this point. |
| 68 DCHECK(was_shutdown_); |
| 64 } | 69 } |
| 65 | 70 |
| 66 void RendererSchedulerImpl::Shutdown() { | 71 void RendererSchedulerImpl::Shutdown() { |
| 67 helper_.Shutdown(); | 72 helper_.Shutdown(); |
| 73 was_shutdown_ = true; |
| 68 } | 74 } |
| 69 | 75 |
| 70 scoped_refptr<base::SingleThreadTaskRunner> | 76 scoped_refptr<base::SingleThreadTaskRunner> |
| 71 RendererSchedulerImpl::DefaultTaskRunner() { | 77 RendererSchedulerImpl::DefaultTaskRunner() { |
| 72 return helper_.DefaultTaskRunner(); | 78 return helper_.DefaultTaskRunner(); |
| 73 } | 79 } |
| 74 | 80 |
| 75 scoped_refptr<base::SingleThreadTaskRunner> | 81 scoped_refptr<base::SingleThreadTaskRunner> |
| 76 RendererSchedulerImpl::CompositorTaskRunner() { | 82 RendererSchedulerImpl::CompositorTaskRunner() { |
| 77 helper_.CheckOnValidThread(); | 83 helper_.CheckOnValidThread(); |
| (...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 633 // meaningful touchstart response and should not impact task priority. | 639 // meaningful touchstart response and should not impact task priority. |
| 634 return current_state; | 640 return current_state; |
| 635 | 641 |
| 636 default: | 642 default: |
| 637 break; | 643 break; |
| 638 } | 644 } |
| 639 return InputStreamState::ACTIVE; | 645 return InputStreamState::ACTIVE; |
| 640 } | 646 } |
| 641 | 647 |
| 642 } // namespace scheduler | 648 } // namespace scheduler |
| OLD | NEW |