Index: Source/wtf/MessageQueue.h |
diff --git a/Source/wtf/MessageQueue.h b/Source/wtf/MessageQueue.h |
index 464c9e23453de9075baf8e882d7cce18e7014735..04dbd36cb94ec06ff4b450588904e487ddf6b19b 100644 |
--- a/Source/wtf/MessageQueue.h |
+++ b/Source/wtf/MessageQueue.h |
@@ -34,6 +34,7 @@ |
#include "wtf/Assertions.h" |
#include "wtf/Deque.h" |
#include "wtf/Noncopyable.h" |
+#include "wtf/OwnPtr.h" |
#include "wtf/PassOwnPtr.h" |
#include "wtf/ThreadingPrimitives.h" |
@@ -53,7 +54,6 @@ namespace WTF { |
WTF_MAKE_NONCOPYABLE(MessageQueue); |
public: |
MessageQueue() : m_killed(false) { } |
- ~MessageQueue(); |
// Returns true if the queue is still alive, false if the queue has been killed. |
bool append(PassOwnPtr<DataType>); |
@@ -77,21 +77,15 @@ namespace WTF { |
private: |
mutable Mutex m_mutex; |
ThreadCondition m_condition; |
- Deque<DataType*> m_queue; |
+ Deque<OwnPtr<DataType> > m_queue; |
bool m_killed; |
}; |
template<typename DataType> |
- MessageQueue<DataType>::~MessageQueue() |
- { |
- deleteAllValues(m_queue); |
- } |
- |
- template<typename DataType> |
inline bool MessageQueue<DataType>::append(PassOwnPtr<DataType> message) |
{ |
MutexLocker lock(m_mutex); |
- m_queue.append(message.leakPtr()); |
+ m_queue.append(message); |
m_condition.signal(); |
return !m_killed; |
} |
@@ -100,7 +94,7 @@ namespace WTF { |
inline void MessageQueue<DataType>::appendAndKill(PassOwnPtr<DataType> message) |
{ |
MutexLocker lock(m_mutex); |
- m_queue.append(message.leakPtr()); |
+ m_queue.append(message); |
m_killed = true; |
m_condition.broadcast(); |
} |
@@ -111,7 +105,7 @@ namespace WTF { |
{ |
MutexLocker lock(m_mutex); |
bool wasEmpty = m_queue.isEmpty(); |
- m_queue.append(message.leakPtr()); |
+ m_queue.append(message); |
m_condition.signal(); |
return wasEmpty; |
} |
@@ -120,7 +114,7 @@ namespace WTF { |
inline void MessageQueue<DataType>::prepend(PassOwnPtr<DataType> message) |
{ |
MutexLocker lock(m_mutex); |
- m_queue.prepend(message.leakPtr()); |
+ m_queue.prepend(message); |
m_condition.signal(); |
} |
@@ -154,13 +148,10 @@ namespace WTF { |
return nullptr; |
} |
- DequeConstIterator<DataType*> found = m_queue.begin(); |
- |
- ASSERT_WITH_SECURITY_IMPLICATION(found != m_queue.end()); |
- OwnPtr<DataType> message = adoptPtr(*found); |
- m_queue.remove(found); |
+ ASSERT_WITH_SECURITY_IMPLICATION(!m_queue.isEmpty()); |
result = MessageQueueMessageReceived; |
- return message.release(); |
+ |
+ return m_queue.takeFirst(); |
} |
template<typename DataType> |
@@ -172,7 +163,7 @@ namespace WTF { |
if (m_queue.isEmpty()) |
return nullptr; |
- return adoptPtr(m_queue.takeFirst()); |
+ return m_queue.takeFirst(); |
} |
template<typename DataType> |
@@ -182,7 +173,7 @@ namespace WTF { |
if (m_queue.isEmpty()) |
return nullptr; |
- return adoptPtr(m_queue.takeFirst()); |
+ return m_queue.takeFirst(); |
} |
template<typename DataType> |