| Index: jingle/glue/thread_wrapper.cc
|
| diff --git a/jingle/glue/thread_wrapper.cc b/jingle/glue/thread_wrapper.cc
|
| index d07b7468c798b6fc96a3ac386044d0c8802c3c37..f74fbb378f4a7baa68349a180556d6501e0a67f9 100644
|
| --- a/jingle/glue/thread_wrapper.cc
|
| +++ b/jingle/glue/thread_wrapper.cc
|
| @@ -30,16 +30,26 @@ base::LazyInstance<base::ThreadLocalPointer<JingleThreadWrapper> >
|
|
|
| // static
|
| void JingleThreadWrapper::EnsureForCurrentMessageLoop() {
|
| - if (JingleThreadWrapper::current() == NULL) {
|
| + if (JingleThreadWrapper::current() == nullptr) {
|
| base::MessageLoop* message_loop = base::MessageLoop::current();
|
| - g_jingle_thread_wrapper.Get()
|
| - .Set(new JingleThreadWrapper(message_loop->message_loop_proxy()));
|
| - message_loop->AddDestructionObserver(current());
|
| + scoped_ptr<JingleThreadWrapper> wrapper =
|
| + JingleThreadWrapper::WrapTaskRunner(message_loop->task_runner());
|
| + message_loop->AddDestructionObserver(wrapper.release());
|
| }
|
|
|
| DCHECK_EQ(rtc::Thread::Current(), current());
|
| }
|
|
|
| +scoped_ptr<JingleThreadWrapper> JingleThreadWrapper::WrapTaskRunner(
|
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
|
| + DCHECK(!JingleThreadWrapper::current());
|
| + DCHECK(task_runner->BelongsToCurrentThread());
|
| +
|
| + scoped_ptr<JingleThreadWrapper> result(new JingleThreadWrapper(task_runner));
|
| + g_jingle_thread_wrapper.Get().Set(result.get());
|
| + return result.Pass();
|
| +}
|
| +
|
| // static
|
| JingleThreadWrapper* JingleThreadWrapper::current() {
|
| return g_jingle_thread_wrapper.Get().Get();
|
| @@ -47,8 +57,7 @@ JingleThreadWrapper* JingleThreadWrapper::current() {
|
|
|
| JingleThreadWrapper::JingleThreadWrapper(
|
| scoped_refptr<base::SingleThreadTaskRunner> task_runner)
|
| - : rtc::Thread(new rtc::NullSocketServer()),
|
| - task_runner_(task_runner),
|
| + : task_runner_(task_runner),
|
| send_allowed_(false),
|
| last_task_id_(0),
|
| pending_send_event_(true, false),
|
| @@ -61,18 +70,19 @@ JingleThreadWrapper::JingleThreadWrapper(
|
| }
|
|
|
| JingleThreadWrapper::~JingleThreadWrapper() {
|
| - Clear(NULL, rtc::MQID_ANY, NULL);
|
| -}
|
| + DCHECK_EQ(this, JingleThreadWrapper::current());
|
| + DCHECK_EQ(this, rtc::Thread::Current());
|
|
|
| -void JingleThreadWrapper::WillDestroyCurrentMessageLoop() {
|
| - DCHECK_EQ(rtc::Thread::Current(), current());
|
| UnwrapCurrent();
|
| - g_jingle_thread_wrapper.Get().Set(NULL);
|
| - rtc::ThreadManager::Instance()->SetCurrentThread(NULL);
|
| + rtc::ThreadManager::Instance()->SetCurrentThread(nullptr);
|
| rtc::MessageQueueManager::Remove(this);
|
| - rtc::SocketServer* ss = socketserver();
|
| + g_jingle_thread_wrapper.Get().Set(nullptr);
|
| +
|
| + Clear(nullptr, rtc::MQID_ANY, nullptr);
|
| +}
|
| +
|
| +void JingleThreadWrapper::WillDestroyCurrentMessageLoop() {
|
| delete this;
|
| - delete ss;
|
| }
|
|
|
| void JingleThreadWrapper::Post(
|
| @@ -133,7 +143,7 @@ void JingleThreadWrapper::Send(rtc::MessageHandler *handler, uint32 id,
|
| return;
|
|
|
| JingleThreadWrapper* current_thread = JingleThreadWrapper::current();
|
| - DCHECK(current_thread != NULL) << "Send() can be called only from a "
|
| + DCHECK(current_thread != nullptr) << "Send() can be called only from a "
|
| "thread that has JingleThreadWrapper.";
|
|
|
| rtc::Message message;
|
| @@ -180,7 +190,7 @@ void JingleThreadWrapper::Send(rtc::MessageHandler *handler, uint32 id,
|
|
|
| void JingleThreadWrapper::ProcessPendingSends() {
|
| while (true) {
|
| - PendingSend* pending_send = NULL;
|
| + PendingSend* pending_send = nullptr;
|
| {
|
| base::AutoLock auto_lock(lock_);
|
| if (!pending_send_messages_.empty()) {
|
| @@ -240,7 +250,7 @@ void JingleThreadWrapper::RunTask(int task_id) {
|
|
|
| if (have_message) {
|
| if (message.message_id == rtc::MQID_DISPOSE) {
|
| - DCHECK(message.phandler == NULL);
|
| + DCHECK(message.phandler == nullptr);
|
| delete message.pdata;
|
| } else {
|
| message.phandler->OnMessage(&message);
|
|
|