| Index: webrtc/base/messagequeue.h
|
| diff --git a/webrtc/base/messagequeue.h b/webrtc/base/messagequeue.h
|
| index 856a6eb4bc89cc1c71c9cb520d3ee2493d92075a..0b5581761ec210094c97d3c535045e4cd5dc22a5 100644
|
| --- a/webrtc/base/messagequeue.h
|
| +++ b/webrtc/base/messagequeue.h
|
| @@ -167,7 +167,12 @@ class MessageQueue {
|
| public:
|
| static const int kForever = -1;
|
|
|
| - explicit MessageQueue(SocketServer* ss = NULL);
|
| + explicit MessageQueue(SocketServer* ss = NULL,
|
| + bool add_to_queue_manager = true);
|
| + // NOTE: ALL SUBCLASSES OF MessageQueue MUST CALL DoDestroy() IN THEIR
|
| + // DESTRUCTORS! This is required to avoid a data race between the destructor
|
| + // modifying the vtable, and the MessageQueue being removed from the
|
| + // MessageQueueManager.
|
| virtual ~MessageQueue();
|
|
|
| SocketServer* socketserver() { return ss_; }
|
| @@ -241,6 +246,9 @@ class MessageQueue {
|
| uint32_t id,
|
| MessageData* pdata);
|
|
|
| + // Perform cleanup, subclasses must call this from the destructor.
|
| + void DoDestroy();
|
| +
|
| // The SocketServer is not owned by MessageQueue.
|
| SocketServer* ss_;
|
| // If a server isn't supplied in the constructor, use this one.
|
| @@ -252,6 +260,7 @@ class MessageQueue {
|
| PriorityQueue dmsgq_;
|
| uint32_t dmsgq_next_num_;
|
| CriticalSection crit_;
|
| + bool fDestroyed_;
|
|
|
| private:
|
| RTC_DISALLOW_COPY_AND_ASSIGN(MessageQueue);
|
|
|