OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/base/task_queue_impl.h" | 5 #include "components/scheduler/base/task_queue_impl.h" |
6 | 6 |
7 #include "components/scheduler/base/task_queue_manager.h" | 7 #include "components/scheduler/base/task_queue_manager.h" |
8 #include "components/scheduler/base/task_queue_manager_delegate.h" | 8 #include "components/scheduler/base/task_queue_manager_delegate.h" |
9 #include "components/scheduler/base/time_domain.h" | 9 #include "components/scheduler/base/time_domain.h" |
10 | 10 |
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 TraceQueueSize(true); | 318 TraceQueueSize(true); |
319 } | 319 } |
320 | 320 |
321 // TODO(alexclarke): Consider merging EnqueueTaskLocked & | 321 // TODO(alexclarke): Consider merging EnqueueTaskLocked & |
322 // EnqueueDelayedTaskLocked. | 322 // EnqueueDelayedTaskLocked. |
323 void TaskQueueImpl::EnqueueDelayedTaskLocked(const Task& pending_task) { | 323 void TaskQueueImpl::EnqueueDelayedTaskLocked(const Task& pending_task) { |
324 if (!any_thread().task_queue_manager) | 324 if (!any_thread().task_queue_manager) |
325 return; | 325 return; |
326 if (any_thread().incoming_queue.empty()) | 326 if (any_thread().incoming_queue.empty()) |
327 any_thread().time_domain->RegisterAsUpdatableTaskQueue(this); | 327 any_thread().time_domain->RegisterAsUpdatableTaskQueue(this); |
328 if (any_thread().pump_policy == PumpPolicy::AUTO && | |
329 any_thread().incoming_queue.empty()) { | |
330 any_thread().task_queue_manager->MaybePostDoWorkOnMainRunner(); | |
331 } | |
332 // TODO(alexclarke): consider std::move() when allowed. | 328 // TODO(alexclarke): consider std::move() when allowed. |
333 any_thread().incoming_queue.push(pending_task); | 329 any_thread().incoming_queue.push(pending_task); |
334 any_thread().incoming_queue.back().set_enqueue_order( | 330 any_thread().incoming_queue.back().set_enqueue_order( |
335 any_thread().task_queue_manager->GetNextSequenceNumber()); | 331 any_thread().task_queue_manager->GetNextSequenceNumber()); |
336 TraceQueueSize(true); | 332 TraceQueueSize(true); |
337 } | 333 } |
338 | 334 |
339 void TaskQueueImpl::SetPumpPolicy(PumpPolicy pump_policy) { | 335 void TaskQueueImpl::SetPumpPolicy(PumpPolicy pump_policy) { |
340 base::AutoLock lock(any_thread_lock_); | 336 base::AutoLock lock(any_thread_lock_); |
341 if (pump_policy == PumpPolicy::AUTO && | 337 if (pump_policy == PumpPolicy::AUTO && |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
555 state->EndDictionary(); | 551 state->EndDictionary(); |
556 } | 552 } |
557 | 553 |
558 size_t TaskQueueImpl::IncomingQueueSizeForTest() const { | 554 size_t TaskQueueImpl::IncomingQueueSizeForTest() const { |
559 base::AutoLock lock(any_thread_lock_); | 555 base::AutoLock lock(any_thread_lock_); |
560 return any_thread().incoming_queue.size(); | 556 return any_thread().incoming_queue.size(); |
561 } | 557 } |
562 | 558 |
563 } // namespace internal | 559 } // namespace internal |
564 } // namespace scheduler | 560 } // namespace scheduler |
OLD | NEW |