Index: mojo/common/handle_watcher.cc |
diff --git a/mojo/common/handle_watcher.cc b/mojo/common/handle_watcher.cc |
index 1affa9041be060f14ee455934c7ee616457b7254..4ae86dbd196adea26e4b091a8a39d36ca41d475e 100644 |
--- a/mojo/common/handle_watcher.cc |
+++ b/mojo/common/handle_watcher.cc |
@@ -9,13 +9,13 @@ |
#include "base/atomic_sequence_num.h" |
#include "base/bind.h" |
#include "base/lazy_instance.h" |
+#include "base/memory/singleton.h" |
#include "base/memory/weak_ptr.h" |
#include "base/message_loop/message_loop.h" |
#include "base/message_loop/message_loop_proxy.h" |
#include "base/synchronization/lock.h" |
#include "base/threading/thread.h" |
#include "base/time/time.h" |
-#include "mojo/common/environment_data.h" |
#include "mojo/common/message_pump_mojo.h" |
#include "mojo/common/message_pump_mojo_handler.h" |
#include "mojo/common/time_helper.h" |
@@ -29,8 +29,6 @@ namespace { |
const char kWatcherThreadName[] = "handle-watcher-thread"; |
-const char kWatcherThreadManagerKey[] = "watcher-thread-manager"; |
- |
// TODO(sky): this should be unnecessary once MessageLoop has been refactored. |
MessagePumpMojo* message_pump_mojo = NULL; |
@@ -176,6 +174,7 @@ class WatcherThreadManager { |
void StopWatching(WatcherID watcher_id); |
private: |
+ friend struct DefaultSingletonTraits<WatcherThreadManager>; |
WatcherThreadManager(); |
base::Thread thread_; |
@@ -187,29 +186,12 @@ class WatcherThreadManager { |
DISALLOW_COPY_AND_ASSIGN(WatcherThreadManager); |
}; |
-struct WatcherThreadManagerData : EnvironmentData::Data { |
- scoped_ptr<WatcherThreadManager> thread_manager; |
-}; |
- |
WatcherThreadManager::~WatcherThreadManager() { |
thread_.Stop(); |
} |
-static base::LazyInstance<base::Lock> thread_lookup_lock = |
- LAZY_INSTANCE_INITIALIZER; |
- |
WatcherThreadManager* WatcherThreadManager::GetInstance() { |
- base::AutoLock auto_lock(thread_lookup_lock.Get()); |
- WatcherThreadManagerData* data = static_cast<WatcherThreadManagerData*>( |
- EnvironmentData::GetInstance()->GetData(kWatcherThreadManagerKey)); |
- if (!data) { |
- data = new WatcherThreadManagerData; |
- data->thread_manager.reset(new WatcherThreadManager); |
- EnvironmentData::GetInstance()->SetData( |
- kWatcherThreadManagerKey, |
- scoped_ptr<EnvironmentData::Data>(data)); |
- } |
- return data->thread_manager.get(); |
+ return Singleton<WatcherThreadManager>::get(); |
} |
WatcherID WatcherThreadManager::StartWatching( |