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 #include "components/scheduler/base/work_queue.h" | 10 #include "components/scheduler/base/work_queue.h" |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 if (!any_thread().task_queue_manager) | 120 if (!any_thread().task_queue_manager) |
121 return; | 121 return; |
122 any_thread().time_domain = nullptr; | 122 any_thread().time_domain = nullptr; |
123 main_thread_only().time_domain = nullptr; | 123 main_thread_only().time_domain = nullptr; |
124 any_thread().task_queue_manager->UnregisterTaskQueue(this); | 124 any_thread().task_queue_manager->UnregisterTaskQueue(this); |
125 | 125 |
126 any_thread().task_queue_manager = nullptr; | 126 any_thread().task_queue_manager = nullptr; |
127 main_thread_only().task_queue_manager = nullptr; | 127 main_thread_only().task_queue_manager = nullptr; |
128 main_thread_only().delayed_incoming_queue = std::priority_queue<Task>(); | 128 main_thread_only().delayed_incoming_queue = std::priority_queue<Task>(); |
129 any_thread().immediate_incoming_queue = std::queue<Task>(); | 129 any_thread().immediate_incoming_queue = std::queue<Task>(); |
130 main_thread_only().immediate_work_queue->Clear(); | 130 main_thread_only().immediate_work_queue.reset(); |
131 main_thread_only().delayed_work_queue->Clear(); | 131 main_thread_only().delayed_work_queue.reset(); |
132 } | 132 } |
133 | 133 |
134 bool TaskQueueImpl::RunsTasksOnCurrentThread() const { | 134 bool TaskQueueImpl::RunsTasksOnCurrentThread() const { |
135 base::AutoLock lock(any_thread_lock_); | 135 base::AutoLock lock(any_thread_lock_); |
136 return base::PlatformThread::CurrentId() == thread_id_; | 136 return base::PlatformThread::CurrentId() == thread_id_; |
137 } | 137 } |
138 | 138 |
139 bool TaskQueueImpl::PostDelayedTask(const tracked_objects::Location& from_here, | 139 bool TaskQueueImpl::PostDelayedTask(const tracked_objects::Location& from_here, |
140 const base::Closure& task, | 140 const base::Closure& task, |
141 base::TimeDelta delay) { | 141 base::TimeDelta delay) { |
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
481 void TaskQueueImpl::PumpQueue(bool may_post_dowork) { | 481 void TaskQueueImpl::PumpQueue(bool may_post_dowork) { |
482 base::AutoLock lock(any_thread_lock_); | 482 base::AutoLock lock(any_thread_lock_); |
483 PumpQueueLocked(may_post_dowork); | 483 PumpQueueLocked(may_post_dowork); |
484 } | 484 } |
485 | 485 |
486 const char* TaskQueueImpl::GetName() const { | 486 const char* TaskQueueImpl::GetName() const { |
487 return name_; | 487 return name_; |
488 } | 488 } |
489 | 489 |
490 void TaskQueueImpl::SetQueuePriority(QueuePriority priority) { | 490 void TaskQueueImpl::SetQueuePriority(QueuePriority priority) { |
491 if (!main_thread_only().task_queue_manager) | 491 if (!main_thread_only().task_queue_manager || priority == GetQueuePriority()) |
492 return; | 492 return; |
493 main_thread_only().task_queue_manager->selector_.SetQueuePriority(this, | 493 main_thread_only().task_queue_manager->selector_.SetQueuePriority(this, |
494 priority); | 494 priority); |
495 } | 495 } |
496 | 496 |
497 TaskQueueImpl::QueuePriority TaskQueueImpl::GetQueuePriority() const { | 497 TaskQueueImpl::QueuePriority TaskQueueImpl::GetQueuePriority() const { |
498 size_t set_index = immediate_work_queue()->work_queue_set_index(); | 498 size_t set_index = immediate_work_queue()->work_queue_set_index(); |
499 DCHECK_EQ(set_index, delayed_work_queue()->work_queue_set_index()); | 499 DCHECK_EQ(set_index, delayed_work_queue()->work_queue_set_index()); |
500 return static_cast<TaskQueue::QueuePriority>(set_index); | 500 return static_cast<TaskQueue::QueuePriority>(set_index); |
501 } | 501 } |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
673 state->SetBoolean("nestable", task.nestable); | 673 state->SetBoolean("nestable", task.nestable); |
674 state->SetBoolean("is_high_res", task.is_high_res); | 674 state->SetBoolean("is_high_res", task.is_high_res); |
675 state->SetDouble( | 675 state->SetDouble( |
676 "delayed_run_time", | 676 "delayed_run_time", |
677 (task.delayed_run_time - base::TimeTicks()).InMicroseconds() / 1000.0L); | 677 (task.delayed_run_time - base::TimeTicks()).InMicroseconds() / 1000.0L); |
678 state->EndDictionary(); | 678 state->EndDictionary(); |
679 } | 679 } |
680 | 680 |
681 } // namespace internal | 681 } // namespace internal |
682 } // namespace scheduler | 682 } // namespace scheduler |
OLD | NEW |