Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(499)

Unified Diff: jingle/glue/thread_wrapper.cc

Issue 876433003: Fix JingleThreadWrapper initialization in PNaCl plugin. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@db
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « jingle/glue/thread_wrapper.h ('k') | remoting/client/plugin/chromoting_instance.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « jingle/glue/thread_wrapper.h ('k') | remoting/client/plugin/chromoting_instance.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698