summaryrefslogtreecommitdiff
path: root/base/task_scheduler/sequence.cc
diff options
context:
space:
mode:
authorHidehiko Abe <hidehiko@google.com>2017-12-13 18:59:30 +0900
committerHidehiko Abe <hidehiko@google.com>2017-12-13 23:41:17 +0900
commit36040ed30c39d2106a2cd5ec033e98b71302a744 (patch)
treedc486be512fe418b1cd79a66c11556174de03c4f /base/task_scheduler/sequence.cc
parent1216c7fc80727dea7cb9c5f946688f4b98ccd23c (diff)
downloadlibchrome-36040ed30c39d2106a2cd5ec033e98b71302a744.tar.gz
libchrome: Uprev the library to r456626 from Chromium
Pulled the latest and greatest version of libchrome from Chromium. The merge was done against r456626 which corresponds to git commit 08266b3fca707804065a2cfd60331722ade41969 of Mar 14, 2017 Notable changes are: - FOR_EACH_OBSERVER macro removed (replaced by use of C++ 11 range-base for loop) - base::Values no more FundamentalValue - stl_util moved to base namespace - some scoped pointers removed in crypto/ in favor of BoringSSL UniquePtr. - path() accessor renamed to GetPath() in ScopedTempDir (and other classes) - introduction of base::CallbackOnce Test: All unit-tests should still pass. Change-Id: I1e65efb167fa708e35ed7c6492f1cb66a6a46104 Merged-In: I180f9defc7607f462389fae17701fff553c4a2d0
Diffstat (limited to 'base/task_scheduler/sequence.cc')
-rw-r--r--base/task_scheduler/sequence.cc26
1 files changed, 16 insertions, 10 deletions
diff --git a/base/task_scheduler/sequence.cc b/base/task_scheduler/sequence.cc
index 4ecb60568c..601b5402d0 100644
--- a/base/task_scheduler/sequence.cc
+++ b/base/task_scheduler/sequence.cc
@@ -26,24 +26,30 @@ bool Sequence::PushTask(std::unique_ptr<Task> task) {
return queue_.size() == 1;
}
-const Task* Sequence::PeekTask() const {
- AutoSchedulerLock auto_lock(lock_);
-
- if (queue_.empty())
- return nullptr;
-
- return queue_.front().get();
-}
-
-bool Sequence::PopTask() {
+std::unique_ptr<Task> Sequence::TakeTask() {
AutoSchedulerLock auto_lock(lock_);
DCHECK(!queue_.empty());
+ DCHECK(queue_.front());
const int priority_index =
static_cast<int>(queue_.front()->traits.priority());
DCHECK_GT(num_tasks_per_priority_[priority_index], 0U);
--num_tasks_per_priority_[priority_index];
+ return std::move(queue_.front());
+}
+
+TaskTraits Sequence::PeekTaskTraits() const {
+ AutoSchedulerLock auto_lock(lock_);
+ DCHECK(!queue_.empty());
+ DCHECK(queue_.front());
+ return queue_.front()->traits;
+}
+
+bool Sequence::Pop() {
+ AutoSchedulerLock auto_lock(lock_);
+ DCHECK(!queue_.empty());
+ DCHECK(!queue_.front());
queue_.pop();
return queue_.empty();
}