diff --git a/webrtc/base/messagequeue.cc b/webrtc/base/messagequeue.cc index ebf98f58a3..591a6b834f 100644 --- a/webrtc/base/messagequeue.cc +++ b/webrtc/base/messagequeue.cc @@ -150,12 +150,8 @@ void MessageQueueManager::ProcessAllMessageQueuesInternal() { //------------------------------------------------------------------ // MessageQueue MessageQueue::MessageQueue(SocketServer* ss, bool init_queue) - : fPeekKeep_(false), - dmsgq_next_num_(0), - fInitialized_(false), - fDestroyed_(false), - stop_(0), - ss_(ss) { + : fStop_(false), fPeekKeep_(false), + dmsgq_next_num_(0), fInitialized_(false), fDestroyed_(false), ss_(ss) { RTC_DCHECK(ss); // Currently, MessageQueue holds a socket server, and is the base class for // Thread. It seems like it makes more sense for Thread to hold the socket @@ -227,16 +223,16 @@ void MessageQueue::WakeUpSocketServer() { } void MessageQueue::Quit() { - AtomicOps::ReleaseStore(&stop_, 1); + fStop_ = true; WakeUpSocketServer(); } bool MessageQueue::IsQuitting() { - return AtomicOps::AcquireLoad(&stop_) != 0; + return fStop_; } void MessageQueue::Restart() { - AtomicOps::ReleaseStore(&stop_, 0); + fStop_ = false; } bool MessageQueue::Peek(Message *pmsg, int cmsWait) { @@ -320,7 +316,7 @@ bool MessageQueue::Get(Message *pmsg, int cmsWait, bool process_io) { return true; } - if (IsQuitting()) + if (fStop_) break; // Which is shorter, the delay wait or the asked wait? @@ -361,7 +357,7 @@ void MessageQueue::Post(const Location& posted_from, uint32_t id, MessageData* pdata, bool time_sensitive) { - if (IsQuitting()) + if (fStop_) return; // Keep thread safe @@ -417,7 +413,7 @@ void MessageQueue::DoDelayPost(const Location& posted_from, MessageHandler* phandler, uint32_t id, MessageData* pdata) { - if (IsQuitting()) { + if (fStop_) { return; } diff --git a/webrtc/base/messagequeue.h b/webrtc/base/messagequeue.h index 628ce4433b..a1b20da0e5 100644 --- a/webrtc/base/messagequeue.h +++ b/webrtc/base/messagequeue.h @@ -288,6 +288,7 @@ class MessageQueue { void WakeUpSocketServer(); + bool fStop_; bool fPeekKeep_; Message msgPeek_; MessageList msgq_ GUARDED_BY(crit_); @@ -298,8 +299,6 @@ class MessageQueue { bool fDestroyed_; private: - volatile int stop_; - // The SocketServer might not be owned by MessageQueue. SocketServer* ss_ GUARDED_BY(ss_lock_); // Used if SocketServer ownership lies with |this|. diff --git a/webrtc/base/thread.cc b/webrtc/base/thread.cc index af5e68bedf..5278c9321e 100644 --- a/webrtc/base/thread.cc +++ b/webrtc/base/thread.cc @@ -218,7 +218,7 @@ bool Thread::Start(Runnable* runnable) { ASSERT(!running()); if (running()) return false; - Restart(); // reset IsQuitting() if the thread is being restarted + Restart(); // reset fStop_ if the thread is being restarted // Make sure that ThreadManager is created on the main thread before // we start a new thread. @@ -346,7 +346,7 @@ void Thread::Send(const Location& posted_from, MessageHandler* phandler, uint32_t id, MessageData* pdata) { - if (IsQuitting()) + if (fStop_) return; // Sent messages are sent to the MessageHandler directly, in the context diff --git a/webrtc/build/sanitizers/tsan_suppressions_webrtc.cc b/webrtc/build/sanitizers/tsan_suppressions_webrtc.cc index 6f480fdfb2..fc7ddbf23b 100644 --- a/webrtc/build/sanitizers/tsan_suppressions_webrtc.cc +++ b/webrtc/build/sanitizers/tsan_suppressions_webrtc.cc @@ -24,6 +24,7 @@ char kTSanDefaultSuppressions[] = // WebRTC specific suppressions. // Split up suppressions covered previously by thread.cc and messagequeue.cc. +"race:rtc::MessageQueue::Quit\n" "race:vp8cx_remove_encoder_threads\n" "race:third_party/libvpx/source/libvpx/vp9/common/vp9_scan.h\n"