Reland disallowing blocking calls on the worker thread.
This fixed the issue that invoking the call when the thread is not started.
BUG=3559
R=juberti@webrtc.org, thorcarpenter@google.com
Review URL: https://webrtc-codereview.appspot.com/24769004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7325 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/session/media/channelmanager.cc b/talk/session/media/channelmanager.cc
index 45e7e47..f40396d 100644
--- a/talk/session/media/channelmanager.cc
+++ b/talk/session/media/channelmanager.cc
@@ -218,6 +218,12 @@
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<bool>(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 34ec45e..8276f4e 100644
--- a/webrtc/base/thread.h
+++ b/webrtc/base/thread.h
@@ -210,7 +210,7 @@
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: