| Index: base/threading/thread.cc
|
| diff --git a/base/threading/thread.cc b/base/threading/thread.cc
|
| index aca4ddbaa02a11c37ef02b39b5e4c3da829f404e..ae4d37319471a247a2bb6cf01dc29a876e445953 100644
|
| --- a/base/threading/thread.cc
|
| +++ b/base/threading/thread.cc
|
| @@ -49,6 +49,20 @@ struct Thread::StartupData {
|
| event(false, false) {}
|
| };
|
|
|
| +Thread::Options::Options()
|
| + : message_loop_type(MessageLoop::TYPE_DEFAULT),
|
| + stack_size(0) {
|
| +}
|
| +
|
| +Thread::Options::Options(MessageLoop::Type type,
|
| + size_t size)
|
| + : message_loop_type(type),
|
| + stack_size(size) {
|
| +}
|
| +
|
| +Thread::Options::~Options() {
|
| +}
|
| +
|
| Thread::Thread(const char* name)
|
| :
|
| #if defined(OS_WIN)
|
| @@ -174,8 +188,14 @@ void Thread::ThreadMain() {
|
| {
|
| // The message loop for this thread.
|
| // Allocated on the heap to centralize any leak reports at this line.
|
| - scoped_ptr<MessageLoop> message_loop(
|
| - new MessageLoop(startup_data_->options.message_loop_type));
|
| + scoped_ptr<MessageLoop> message_loop;
|
| + if (!startup_data_->options.message_pump_factory.is_null()) {
|
| + message_loop.reset(
|
| + new MessageLoop(startup_data_->options.message_pump_factory.Run()));
|
| + } else {
|
| + message_loop.reset(
|
| + new MessageLoop(startup_data_->options.message_loop_type));
|
| + }
|
|
|
| // Complete the initialization of our Thread object.
|
| thread_id_ = PlatformThread::CurrentId();
|
|
|