Index: webrtc/base/messagequeue.cc |
diff --git a/webrtc/base/messagequeue.cc b/webrtc/base/messagequeue.cc |
index 61aa61192bbad69d87ddf5e79aab3a5af3ce290f..140dd672244e9210efac0ca07bf6bd4cc27afde5 100644 |
--- a/webrtc/base/messagequeue.cc |
+++ b/webrtc/base/messagequeue.cc |
@@ -113,6 +113,27 @@ void MessageQueueManager::ClearInternal(MessageHandler *handler) { |
(*iter)->Clear(handler); |
} |
+class NoOpMessageHandler : public MessageHandler { |
+ public: |
+ void OnMessage(Message* msg) override {} |
+}; |
+ |
+void MessageQueueManager::WakeAllMessageQueues() { |
+ if (!instance_) { |
+ return; |
+ } |
+ return Instance()->WakeAllMessageQueuesInternal(); |
+} |
+void MessageQueueManager::WakeAllMessageQueuesInternal() { |
+#if CS_DEBUG_CHECKS // CurrentThreadIsOwner returns true by default. |
+ ASSERT(!crit_.CurrentThreadIsOwner()); // See note above. |
+#endif |
+ CritScope cs(&crit_); |
+ for (MessageQueue* queue : message_queues_) { |
+ queue->Post(new NoOpMessageHandler(), 0); |
+ } |
+} |
+ |
//------------------------------------------------------------------ |
// MessageQueue |