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