| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| 11 #include "base/debug/alias.h" | 11 #include "base/debug/alias.h" |
| 12 #include "base/lazy_instance.h" | 12 #include "base/lazy_instance.h" |
| 13 #include "base/logging.h" | 13 #include "base/logging.h" |
| 14 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
| 15 #include "base/message_pump_default.h" | 15 #include "base/message_pump_default.h" |
| 16 #include "base/metrics/histogram.h" | 16 #include "base/metrics/histogram.h" |
| 17 #include "base/third_party/dynamic_annotations/dynamic_annotations.h" | 17 #include "base/third_party/dynamic_annotations/dynamic_annotations.h" |
| 18 #include "base/threading/thread_local.h" | 18 #include "base/threading/thread_local.h" |
| 19 #include "base/time.h" | 19 #include "base/time.h" |
| 20 #include "base/tracked_objects.h" | 20 #include "base/tracked_objects.h" |
| 21 | 21 |
| 22 #if defined(OS_MACOSX) | 22 #if defined(OS_MACOSX) |
| 23 #include "base/message_pump_mac.h" | 23 #include "base/message_pump_mac.h" |
| 24 #endif | 24 #endif |
| 25 #if defined(OS_POSIX) | 25 #if defined(OS_POSIX) |
| 26 #include "base/message_pump_libevent.h" | 26 #include "base/message_pump_libevent.h" |
| 27 #endif | 27 #endif |
| 28 |
| 28 #if defined(OS_POSIX) && !defined(OS_MACOSX) | 29 #if defined(OS_POSIX) && !defined(OS_MACOSX) |
| 29 #include <gdk/gdk.h> | 30 #include <gdk/gdk.h> |
| 30 #include <gdk/gdkx.h> | 31 #include <gdk/gdkx.h> |
| 31 #include "base/message_pump_glib.h" | |
| 32 #endif | |
| 33 #if defined(TOUCH_UI) | 32 #if defined(TOUCH_UI) |
| 34 #include "base/message_pump_glib_x.h" | 33 #include "base/message_pump_x.h" |
| 35 #endif | 34 #else |
| 35 #include "base/message_pump_gtk.h" |
| 36 #endif // defined(TOUCH_UI) |
| 37 #endif // defined(OS_POSIX) && !defined(OS_MACOSX) |
| 36 | 38 |
| 37 using base::TimeDelta; | 39 using base::TimeDelta; |
| 38 using base::TimeTicks; | 40 using base::TimeTicks; |
| 39 | 41 |
| 40 namespace { | 42 namespace { |
| 41 | 43 |
| 42 // A lazily created thread local storage for quick access to a thread's message | 44 // A lazily created thread local storage for quick access to a thread's message |
| 43 // loop, if one exists. This should be safe and free of static constructors. | 45 // loop, if one exists. This should be safe and free of static constructors. |
| 44 base::LazyInstance<base::ThreadLocalPointer<MessageLoop> > lazy_tls_ptr( | 46 base::LazyInstance<base::ThreadLocalPointer<MessageLoop> > lazy_tls_ptr( |
| 45 base::LINKER_INITIALIZED); | 47 base::LINKER_INITIALIZED); |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 169 lazy_tls_ptr.Pointer()->Set(this); | 171 lazy_tls_ptr.Pointer()->Set(this); |
| 170 | 172 |
| 171 // TODO(rvargas): Get rid of the OS guards. | 173 // TODO(rvargas): Get rid of the OS guards. |
| 172 #if defined(OS_WIN) | 174 #if defined(OS_WIN) |
| 173 #define MESSAGE_PUMP_UI new base::MessagePumpForUI() | 175 #define MESSAGE_PUMP_UI new base::MessagePumpForUI() |
| 174 #define MESSAGE_PUMP_IO new base::MessagePumpForIO() | 176 #define MESSAGE_PUMP_IO new base::MessagePumpForIO() |
| 175 #elif defined(OS_MACOSX) | 177 #elif defined(OS_MACOSX) |
| 176 #define MESSAGE_PUMP_UI base::MessagePumpMac::Create() | 178 #define MESSAGE_PUMP_UI base::MessagePumpMac::Create() |
| 177 #define MESSAGE_PUMP_IO new base::MessagePumpLibevent() | 179 #define MESSAGE_PUMP_IO new base::MessagePumpLibevent() |
| 178 #elif defined(TOUCH_UI) | 180 #elif defined(TOUCH_UI) |
| 179 #define MESSAGE_PUMP_UI new base::MessagePumpGlibX() | 181 #define MESSAGE_PUMP_UI new base::MessagePumpX() |
| 180 #define MESSAGE_PUMP_IO new base::MessagePumpLibevent() | 182 #define MESSAGE_PUMP_IO new base::MessagePumpLibevent() |
| 181 #elif defined(OS_NACL) | 183 #elif defined(OS_NACL) |
| 182 // Currently NaCl doesn't have a UI or an IO MessageLoop. | 184 // Currently NaCl doesn't have a UI or an IO MessageLoop. |
| 183 // TODO(abarth): Figure out if we need these. | 185 // TODO(abarth): Figure out if we need these. |
| 184 #define MESSAGE_PUMP_UI NULL | 186 #define MESSAGE_PUMP_UI NULL |
| 185 #define MESSAGE_PUMP_IO NULL | 187 #define MESSAGE_PUMP_IO NULL |
| 186 #elif defined(OS_POSIX) // POSIX but not MACOSX. | 188 #elif defined(OS_POSIX) // POSIX but not MACOSX. |
| 187 #define MESSAGE_PUMP_UI new base::MessagePumpForUI() | 189 #define MESSAGE_PUMP_UI new base::MessagePumpGtk() |
| 188 #define MESSAGE_PUMP_IO new base::MessagePumpLibevent() | 190 #define MESSAGE_PUMP_IO new base::MessagePumpLibevent() |
| 189 #else | 191 #else |
| 190 #error Not implemented | 192 #error Not implemented |
| 191 #endif | 193 #endif |
| 192 | 194 |
| 193 if (type_ == TYPE_UI) { | 195 if (type_ == TYPE_UI) { |
| 194 pump_ = MESSAGE_PUMP_UI; | 196 pump_ = MESSAGE_PUMP_UI; |
| 195 } else if (type_ == TYPE_IO) { | 197 } else if (type_ == TYPE_IO) { |
| 196 pump_ = MESSAGE_PUMP_IO; | 198 pump_ = MESSAGE_PUMP_IO; |
| 197 } else { | 199 } else { |
| (...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 863 Watcher *delegate) { | 865 Watcher *delegate) { |
| 864 return pump_libevent()->WatchFileDescriptor( | 866 return pump_libevent()->WatchFileDescriptor( |
| 865 fd, | 867 fd, |
| 866 persistent, | 868 persistent, |
| 867 static_cast<base::MessagePumpLibevent::Mode>(mode), | 869 static_cast<base::MessagePumpLibevent::Mode>(mode), |
| 868 controller, | 870 controller, |
| 869 delegate); | 871 delegate); |
| 870 } | 872 } |
| 871 | 873 |
| 872 #endif | 874 #endif |
| OLD | NEW |