Chromium Code Reviews| Index: remoting/jingle_glue/jingle_thread.cc |
| diff --git a/remoting/jingle_glue/jingle_thread.cc b/remoting/jingle_glue/jingle_thread.cc |
| index 25f646a1510cf9c807475af90f74eccc545085f1..dea032317d60a8935c24bee39cfa872fdb526ffd 100644 |
| --- a/remoting/jingle_glue/jingle_thread.cc |
| +++ b/remoting/jingle_glue/jingle_thread.cc |
| @@ -42,12 +42,6 @@ class JingleThread::JingleMessagePump : public base::MessagePump, |
| // TODO(sergeyu): Remove it when JingleThread moved on Chromium's |
| // base::Thread. |
| base::MessagePump::Delegate* delegate = thread_->message_loop(); |
| - // Loop until we run out of work. |
| - while (true) { |
| - if (!delegate->DoWork()) |
| - break; |
| - } |
| - |
| // Process all pending tasks. |
| while (true) { |
| if (delegate->DoWork()) |
| @@ -61,7 +55,6 @@ class JingleThread::JingleMessagePump : public base::MessagePump, |
| } |
| private: |
| - |
| void ScheduleNextDelayedTask() { |
| DCHECK_EQ(thread_->message_loop(), MessageLoop::current()); |
| @@ -86,6 +79,16 @@ class JingleThread::JingleMessageLoop : public MessageLoop { |
| : MessageLoop(MessageLoop::TYPE_IO) { |
| pump_ = new JingleMessagePump(thread); |
| } |
| + |
| + void Initialize() { |
| + jingle_message_loop_state_.reset(new AutoRunState(this)); |
| + } |
| + |
| + private: |
| + // AutoRunState sets |state_| for this message loop. It needs to be |
| + // created here because we never call Run() or RunAllPending() for |
| + // the thread. |
| + scoped_ptr<AutoRunState> jingle_message_loop_state_; |
| }; |
| TaskPump::TaskPump() { |
| @@ -120,6 +123,7 @@ void JingleThread::Start() { |
| void JingleThread::Run() { |
| JingleMessageLoop message_loop(this); |
| message_loop_ = &message_loop; |
| + message_loop.Initialize(); |
|
awong
2010/12/23 23:02:49
Do this before assigning it to the member variable
Sergey Ulanov
2010/12/23 23:37:53
Done.
|
| TaskPump task_pump; |
| task_pump_ = &task_pump; |