| Index: media/blink/waiter_index.cc
|
| diff --git a/media/blink/waiter_index.cc b/media/blink/waiter_index.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..fb3899643190e88cd0acb8313d99bba352a1c991
|
| --- /dev/null
|
| +++ b/media/blink/waiter_index.cc
|
| @@ -0,0 +1,38 @@
|
| +// Copyright 2013 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "media/blink/waiter_index.h"
|
| +
|
| +namespace media {
|
| +
|
| +WaiterIndex::WaiterIndex() {}
|
| +WaiterIndex::~WaiterIndex() {}
|
| +
|
| +void WaiterIndex::WaitFor(int32_t pos, Waiter* waiter) {
|
| + waiters_[pos].insert(waiter);
|
| +}
|
| +
|
| +void WaiterIndex::StopWaitFor(int32_t pos, Waiter* waiter) {
|
| + std::map<int32_t, std::set<Waiter*> >::iterator i = waiters_.find(pos);
|
| + if (i != waiters_.end()) {
|
| + i->second.erase(waiter);
|
| + if (i->second.empty()) {
|
| + waiters_.erase(i);
|
| + }
|
| + }
|
| +}
|
| +
|
| +void WaiterIndex::WakeUp(int32_t pos) {
|
| + std::map<int32_t, std::set<Waiter*> >::iterator i = waiters_.find(pos);
|
| + if (i != waiters_.end()) {
|
| + std::set<Waiter*> tmp;
|
| + tmp.swap(i->second);
|
| + waiters_.erase(pos);
|
| + for (Waiter* waiter: tmp) {
|
| + waiter->Continue();
|
| + }
|
| + }
|
| +}
|
| +
|
| +} // namespace media
|
|
|