Chromium Code Reviews| Index: webrtc/base/messagequeue.cc |
| diff --git a/webrtc/base/messagequeue.cc b/webrtc/base/messagequeue.cc |
| index da50e2304f7a686af4245df733566528d279d185..455edd809b3994c77e6e04e8958a3f1830d22e20 100644 |
| --- a/webrtc/base/messagequeue.cc |
| +++ b/webrtc/base/messagequeue.cc |
| @@ -133,8 +133,12 @@ void MessageQueueManager::OnMessage(Message* pmsg) { |
| //------------------------------------------------------------------ |
| // MessageQueue |
| MessageQueue::MessageQueue(SocketServer* ss, bool init_queue) |
| - : fStop_(false), fPeekKeep_(false), |
| - dmsgq_next_num_(0), fInitialized_(false), fDestroyed_(false), ss_(ss) { |
| + : fPeekKeep_(false), |
| + dmsgq_next_num_(0), |
| + fInitialized_(false), |
| + fDestroyed_(false), |
| + stop_(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 |
| @@ -206,16 +210,21 @@ void MessageQueue::WakeUpSocketServer() { |
| } |
| void MessageQueue::Quit() { |
| - fStop_ = true; |
| + { |
| + CritScope cs(&stop_crit_); |
| + stop_ = true; |
|
pthatcher1
2016/06/01 15:29:14
Might as well rename "stop_" to "quitting_".
|
| + } |
| WakeUpSocketServer(); |
| } |
| bool MessageQueue::IsQuitting() { |
| - return fStop_; |
| + CritScope cs(&stop_crit_); |
|
pthatcher1
2016/06/01 15:29:14
Should we use an std::atomic here once they are al
tommi (sloooow) - chröme
2016/06/01 15:53:29
We do have alternatives to std::atomic that we can
|
| + return stop_; |
| } |
| void MessageQueue::Restart() { |
| - fStop_ = false; |
| + CritScope cs(&stop_crit_); |
| + stop_ = false; |
| } |
| bool MessageQueue::Peek(Message *pmsg, int cmsWait) { |
| @@ -299,7 +308,7 @@ bool MessageQueue::Get(Message *pmsg, int cmsWait, bool process_io) { |
| return true; |
| } |
| - if (fStop_) |
| + if (IsQuitting()) |
| break; |
| // Which is shorter, the delay wait or the asked wait? |
| @@ -339,7 +348,7 @@ void MessageQueue::Post(MessageHandler* phandler, |
| uint32_t id, |
| MessageData* pdata, |
| bool time_sensitive) { |
| - if (fStop_) |
| + if (IsQuitting()) |
| return; |
| // Keep thread safe |
| @@ -388,7 +397,7 @@ void MessageQueue::DoDelayPost(int64_t cmsDelay, |
| MessageHandler* phandler, |
| uint32_t id, |
| MessageData* pdata) { |
| - if (fStop_) { |
| + if (IsQuitting()) { |
| return; |
| } |