diff options
author | Hidehiko Abe <hidehiko@google.com> | 2017-12-13 18:59:30 +0900 |
---|---|---|
committer | Hidehiko Abe <hidehiko@google.com> | 2017-12-13 23:41:17 +0900 |
commit | 36040ed30c39d2106a2cd5ec033e98b71302a744 (patch) | |
tree | dc486be512fe418b1cd79a66c11556174de03c4f /base/task_scheduler/sequence.cc | |
parent | 1216c7fc80727dea7cb9c5f946688f4b98ccd23c (diff) | |
download | libchrome-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.cc | 26 |
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(); } |