diff --git a/talk/session/media/channelmanager.cc b/talk/session/media/channelmanager.cc index 45e7e4764a..f40396d928 100644 --- a/talk/session/media/channelmanager.cc +++ b/talk/session/media/channelmanager.cc @@ -218,6 +218,12 @@ bool ChannelManager::Init() { ASSERT(worker_thread_ != NULL); if (worker_thread_) { + if (worker_thread_ != rtc::Thread::Current()) { + // Do not allow invoking calls to other threads on the worker thread. + worker_thread_->Invoke(rtc::Bind( + &rtc::Thread::SetAllowBlockingCalls, worker_thread_, false)); + } + if (media_engine_->Init(worker_thread_)) { initialized_ = true; diff --git a/webrtc/base/thread.h b/webrtc/base/thread.h index 34ec45e3b9..8276f4e8ec 100644 --- a/webrtc/base/thread.h +++ b/webrtc/base/thread.h @@ -210,7 +210,7 @@ class Thread : public MessageQueue { bool RunningForTest() { return running(); } // Sets the per-thread allow-blocking-calls flag and returns the previous - // value. + // value. Must be called on this thread. bool SetAllowBlockingCalls(bool allow); protected: