| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/message_loop.h" | 5 #include "base/message_loop.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 | 71 |
| 72 MessageLoop::MessageLoop(Type type) | 72 MessageLoop::MessageLoop(Type type) |
| 73 : type_(type), | 73 : type_(type), |
| 74 nestable_tasks_allowed_(true), | 74 nestable_tasks_allowed_(true), |
| 75 exception_restoration_(false), | 75 exception_restoration_(false), |
| 76 state_(NULL), | 76 state_(NULL), |
| 77 next_sequence_num_(0) { | 77 next_sequence_num_(0) { |
| 78 DCHECK(!current()) << "should only have one message loop per thread"; | 78 DCHECK(!current()) << "should only have one message loop per thread"; |
| 79 lazy_tls_ptr.Pointer()->Set(this); | 79 lazy_tls_ptr.Pointer()->Set(this); |
| 80 | 80 |
| 81 // TODO(darin): Choose the pump based on the requested type. | |
| 82 #if defined(OS_WIN) | 81 #if defined(OS_WIN) |
| 82 // TODO(rvargas): Get rid of the OS guards. |
| 83 if (type_ == TYPE_DEFAULT) { | 83 if (type_ == TYPE_DEFAULT) { |
| 84 pump_ = new base::MessagePumpDefault(); | 84 pump_ = new base::MessagePumpDefault(); |
| 85 } else if (type_ == TYPE_IO) { |
| 86 pump_ = new base::MessagePumpForIO(); |
| 85 } else { | 87 } else { |
| 86 pump_ = new base::MessagePumpWin(); | 88 DCHECK(type_ == TYPE_UI); |
| 89 pump_ = new base::MessagePumpForUI(); |
| 87 } | 90 } |
| 88 #elif defined(OS_POSIX) | 91 #elif defined(OS_POSIX) |
| 89 #if defined(OS_MACOSX) | 92 #if defined(OS_MACOSX) |
| 90 if (type_ == TYPE_UI) { | 93 if (type_ == TYPE_UI) { |
| 91 pump_ = base::MessagePumpMac::Create(); | 94 pump_ = base::MessagePumpMac::Create(); |
| 92 } else | 95 } else |
| 93 #endif // OS_MACOSX | 96 #endif // OS_MACOSX |
| 94 if (type_ == TYPE_IO) { | 97 if (type_ == TYPE_IO) { |
| 95 pump_ = new base::MessagePumpLibevent(); | 98 pump_ = new base::MessagePumpLibevent(); |
| 96 } else { | 99 } else { |
| (...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 569 } | 572 } |
| 570 | 573 |
| 571 #endif // defined(OS_WIN) | 574 #endif // defined(OS_WIN) |
| 572 | 575 |
| 573 //------------------------------------------------------------------------------ | 576 //------------------------------------------------------------------------------ |
| 574 // MessageLoopForIO | 577 // MessageLoopForIO |
| 575 | 578 |
| 576 #if defined(OS_WIN) | 579 #if defined(OS_WIN) |
| 577 | 580 |
| 578 void MessageLoopForIO::WatchObject(HANDLE object, Watcher* watcher) { | 581 void MessageLoopForIO::WatchObject(HANDLE object, Watcher* watcher) { |
| 579 pump_win()->WatchObject(object, watcher); | 582 pump_io()->WatchObject(object, watcher); |
| 580 } | 583 } |
| 581 | 584 |
| 582 #elif defined(OS_POSIX) | 585 #elif defined(OS_POSIX) |
| 583 | 586 |
| 584 void MessageLoopForIO::WatchSocket(int socket, short interest_mask, | 587 void MessageLoopForIO::WatchSocket(int socket, short interest_mask, |
| 585 struct event* e, Watcher* watcher) { | 588 struct event* e, Watcher* watcher) { |
| 586 pump_libevent()->WatchSocket(socket, interest_mask, e, watcher); | 589 pump_libevent()->WatchSocket(socket, interest_mask, e, watcher); |
| 587 } | 590 } |
| 588 | 591 |
| 589 void MessageLoopForIO::UnwatchSocket(struct event* e) { | 592 void MessageLoopForIO::UnwatchSocket(struct event* e) { |
| 590 pump_libevent()->UnwatchSocket(e); | 593 pump_libevent()->UnwatchSocket(e); |
| 591 } | 594 } |
| 592 #endif | 595 #endif |
| OLD | NEW |