Chromium Code Reviews| Index: Source/platform/scheduler/DoubleBufferedDeque.h |
| diff --git a/Source/platform/scheduler/DoubleBufferedDeque.h b/Source/platform/scheduler/DoubleBufferedDeque.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..404982972a80115a9227192bcd45603dc5cd2c6d |
| --- /dev/null |
| +++ b/Source/platform/scheduler/DoubleBufferedDeque.h |
| @@ -0,0 +1,44 @@ |
| +// Copyright 2014 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. |
| + |
| +#ifndef DoubleBufferedDeque_h |
| +#define DoubleBufferedDeque_h |
| + |
| +#include "wtf/Deque.h" |
| +#include "wtf/Noncopyable.h" |
| + |
| +namespace blink { |
| + |
| +template <typename T> class DoubleBufferedDeque { |
|
eseidel
2014/08/11 15:19:14
Base datatypes like this probably belong in wtf.
alexclarke
2014/08/12 11:37:02
Done.
|
| + WTF_MAKE_NONCOPYABLE(DoubleBufferedDeque); |
| +public: |
| + DoubleBufferedDeque() |
| + : m_activeIndex(0) { } |
| + |
| + void append(const T& value) |
| + { |
| + m_queue[m_activeIndex].append(value); |
| + } |
| + |
| + bool isEmpty() |
| + { |
| + return m_queue[m_activeIndex].isEmpty(); |
| + } |
| + |
| + WTF::Deque<T>& swapBuffers() |
| + { |
| + int oldIndex = m_activeIndex; |
| + m_activeIndex ^= 1; |
| + ASSERT(m_queue[m_activeIndex].isEmpty()); |
| + return m_queue[oldIndex]; |
| + } |
| + |
| +private: |
| + WTF::Deque<T> m_queue[2]; |
| + int m_activeIndex; |
| +}; |
| + |
| +} // namespace blink |
| + |
| +#endif // DoubleBufferedDeque_h |