Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Side by Side Diff: components/scheduler/base/task_queue_manager.cc

Issue 1374653003: scheduler: Add a base directory (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed gn clobber build. Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/child/task_queue_manager.h" 5 #include "components/scheduler/base/task_queue_manager.h"
6 6
7 #include <queue> 7 #include <queue>
8 #include <set> 8 #include <set>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/time/default_tick_clock.h" 11 #include "base/time/default_tick_clock.h"
12 #include "components/scheduler/child/lazy_now.h" 12 #include "components/scheduler/base/lazy_now.h"
13 #include "components/scheduler/child/nestable_single_thread_task_runner.h" 13 #include "components/scheduler/base/nestable_single_thread_task_runner.h"
14 #include "components/scheduler/child/task_queue_impl.h" 14 #include "components/scheduler/base/task_queue_impl.h"
15 #include "components/scheduler/child/task_queue_selector.h" 15 #include "components/scheduler/base/task_queue_selector.h"
16 #include "components/scheduler/child/task_queue_sets.h" 16 #include "components/scheduler/base/task_queue_sets.h"
17 17
18 namespace { 18 namespace {
19 const int64_t kMaxTimeTicks = std::numeric_limits<int64>::max(); 19 const int64_t kMaxTimeTicks = std::numeric_limits<int64>::max();
20 } 20 }
21 21
22 namespace scheduler { 22 namespace scheduler {
23 23
24 TaskQueueManager::TaskQueueManager( 24 TaskQueueManager::TaskQueueManager(
25 scoped_refptr<NestableSingleThreadTaskRunner> main_task_runner, 25 scoped_refptr<NestableSingleThreadTaskRunner> main_task_runner,
26 const char* disabled_by_default_tracing_category, 26 const char* disabled_by_default_tracing_category,
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 } 75 }
76 76
77 void TaskQueueManager::SetObserver(Observer* observer) { 77 void TaskQueueManager::SetObserver(Observer* observer) {
78 DCHECK(main_thread_checker_.CalledOnValidThread()); 78 DCHECK(main_thread_checker_.CalledOnValidThread());
79 observer_ = observer; 79 observer_ = observer;
80 } 80 }
81 81
82 void TaskQueueManager::UnregisterTaskQueue( 82 void TaskQueueManager::UnregisterTaskQueue(
83 scoped_refptr<internal::TaskQueueImpl> task_queue) { 83 scoped_refptr<internal::TaskQueueImpl> task_queue) {
84 TRACE_EVENT1(disabled_by_default_tracing_category_, 84 TRACE_EVENT1(disabled_by_default_tracing_category_,
85 "TaskQueueManager::UnregisterTaskQueue", 85 "TaskQueueManager::UnregisterTaskQueue", "queue_name",
86 "queue_name", task_queue->GetName()); 86 task_queue->GetName());
87 DCHECK(main_thread_checker_.CalledOnValidThread()); 87 DCHECK(main_thread_checker_.CalledOnValidThread());
88 if (observer_) 88 if (observer_)
89 observer_->OnUnregisterTaskQueue(task_queue); 89 observer_->OnUnregisterTaskQueue(task_queue);
90 90
91 // Add |task_queue| to |queues_to_delete_| so we can prevent it from being 91 // Add |task_queue| to |queues_to_delete_| so we can prevent it from being
92 // freed while any of our structures hold hold a raw pointer to it. 92 // freed while any of our structures hold hold a raw pointer to it.
93 queues_to_delete_.insert(task_queue); 93 queues_to_delete_.insert(task_queue);
94 queues_.erase(task_queue); 94 queues_.erase(task_queue);
95 selector_.RemoveQueue(task_queue.get()); 95 selector_.RemoveQueue(task_queue.get());
96 96
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 } 177 }
178 } 178 }
179 179
180 auto iter = updatable_queue_set_.begin(); 180 auto iter = updatable_queue_set_.begin();
181 while (iter != updatable_queue_set_.end()) { 181 while (iter != updatable_queue_set_.end()) {
182 internal::TaskQueueImpl* queue = *iter++; 182 internal::TaskQueueImpl* queue = *iter++;
183 // NOTE Update work queue may erase itself from |updatable_queue_set_|. 183 // NOTE Update work queue may erase itself from |updatable_queue_set_|.
184 // This is fine, erasing an element won't invalidate any interator, as long 184 // This is fine, erasing an element won't invalidate any interator, as long
185 // as the iterator isn't the element being delated. 185 // as the iterator isn't the element being delated.
186 if (queue->work_queue().empty()) 186 if (queue->work_queue().empty())
187 queue->UpdateWorkQueue(&lazy_now, should_trigger_wakeup, previous_task); 187 queue->UpdateWorkQueue(&lazy_now, should_trigger_wakeup, previous_task);
188 } 188 }
189 } 189 }
190 190
191 void TaskQueueManager::ScheduleDelayedWorkTask( 191 void TaskQueueManager::ScheduleDelayedWorkTask(
192 scoped_refptr<internal::TaskQueueImpl> queue, 192 scoped_refptr<internal::TaskQueueImpl> queue,
193 base::TimeTicks delayed_run_time) { 193 base::TimeTicks delayed_run_time) {
194 internal::LazyNow lazy_now(this); 194 internal::LazyNow lazy_now(this);
195 ScheduleDelayedWork(queue.get(), delayed_run_time, &lazy_now); 195 ScheduleDelayedWork(queue.get(), delayed_run_time, &lazy_now);
196 } 196 }
197 197
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
455 } 455 }
456 456
457 void TaskQueueManager::OnTaskQueueEnabled(internal::TaskQueueImpl* queue) { 457 void TaskQueueManager::OnTaskQueueEnabled(internal::TaskQueueImpl* queue) {
458 DCHECK(main_thread_checker_.CalledOnValidThread()); 458 DCHECK(main_thread_checker_.CalledOnValidThread());
459 // Only schedule DoWork if there's something to do. 459 // Only schedule DoWork if there's something to do.
460 if (!queue->work_queue().empty()) 460 if (!queue->work_queue().empty())
461 MaybePostDoWorkOnMainRunner(); 461 MaybePostDoWorkOnMainRunner();
462 } 462 }
463 463
464 } // namespace scheduler 464 } // namespace scheduler
OLDNEW
« no previous file with comments | « components/scheduler/base/task_queue_manager.h ('k') | components/scheduler/base/task_queue_manager_perftest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698