summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/JavaScriptCore/wtf/MessageQueue.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/webkit/JavaScriptCore/wtf/MessageQueue.h')
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/MessageQueue.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/MessageQueue.h b/src/3rdparty/webkit/JavaScriptCore/wtf/MessageQueue.h
index 9549f37..7721dba 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/MessageQueue.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/MessageQueue.h
@@ -47,9 +47,10 @@ namespace WTF {
template<typename DataType>
class MessageQueue : Noncopyable {
public:
- MessageQueue() : m_killed(false) {}
+ MessageQueue() : m_killed(false) { }
void append(const DataType&);
+ bool appendAndCheckEmpty(const DataType&);
void prepend(const DataType&);
bool waitForMessage(DataType&);
template<typename Predicate>
@@ -81,6 +82,17 @@ namespace WTF {
m_condition.signal();
}
+ // Returns true if the queue was empty before the item was added.
+ template<typename DataType>
+ inline bool MessageQueue<DataType>::appendAndCheckEmpty(const DataType& message)
+ {
+ MutexLocker lock(m_mutex);
+ bool wasEmpty = m_queue.isEmpty();
+ m_queue.append(message);
+ m_condition.signal();
+ return wasEmpty;
+ }
+
template<typename DataType>
inline void MessageQueue<DataType>::prepend(const DataType& message)
{