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
This commit is contained in:
jiayl@webrtc.org 2014-09-29 22:45:55 +00:00
parent ea6c12e59f
commit 7dfb7fa189
2 changed files with 7 additions and 1 deletions

View File

@ -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<bool>(rtc::Bind(
&rtc::Thread::SetAllowBlockingCalls, worker_thread_, false));
}
if (media_engine_->Init(worker_thread_)) {
initialized_ = true;

View File

@ -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: