Index: base/message_loop/message_loop_proxy_impl.cc |
diff --git a/base/message_loop/message_loop_proxy_impl.cc b/base/message_loop/message_loop_proxy_impl.cc |
index b7abca377e668270d2f1db89f54c3731de577602..580620d6bd5bf5a0f040dc85facdf4fbf9178b28 100644 |
--- a/base/message_loop/message_loop_proxy_impl.cc |
+++ b/base/message_loop/message_loop_proxy_impl.cc |
@@ -15,7 +15,13 @@ namespace internal { |
MessageLoopProxyImpl::MessageLoopProxyImpl( |
scoped_refptr<IncomingTaskQueue> incoming_queue) |
: incoming_queue_(incoming_queue), |
- valid_thread_id_(PlatformThread::CurrentId()) { |
+ valid_thread_id_(kInvalidThreadId) { |
+} |
+ |
+void MessageLoopProxyImpl::BindToCurrentThread() { |
+ AutoLock lock(valid_thread_id_lock_); |
+ DCHECK_EQ(kInvalidThreadId, valid_thread_id_); |
+ valid_thread_id_ = PlatformThread::CurrentId(); |
} |
bool MessageLoopProxyImpl::PostDelayedTask( |
@@ -35,6 +41,7 @@ bool MessageLoopProxyImpl::PostNonNestableDelayedTask( |
} |
bool MessageLoopProxyImpl::RunsTasksOnCurrentThread() const { |
+ AutoLock lock(valid_thread_id_lock_); |
return valid_thread_id_ == PlatformThread::CurrentId(); |
} |