diff options
author | nick@chromium.org <nick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-01 23:14:53 +0000 |
---|---|---|
committer | nick@chromium.org <nick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-01 23:14:53 +0000 |
commit | 41a56e42522b728dc3002800e7b38322397a8121 (patch) | |
tree | 6d4a588e68c292b90562110858808c5107f54df2 | |
parent | cdc6dffa8a21f8d362de4cf79de3bdc3a6b96384 (diff) | |
download | chromium_src-41a56e42522b728dc3002800e7b38322397a8121.zip chromium_src-41a56e42522b728dc3002800e7b38322397a8121.tar.gz chromium_src-41a56e42522b728dc3002800e7b38322397a8121.tar.bz2 |
Convert the SslInitializationSingleton over to a base/singleton.
The existing implementation crashed when I switched syncapi to static
linkage, I think because pthreads had already been unloaded when
CleanupSSL happened.
BUG=19895
TEST=basic two-client sync run-through, start-up, shutdown.
Review URL: http://codereview.chromium.org/246067
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27792 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/sync/notifier/listener/talk_mediator_impl.cc | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/chrome/browser/sync/notifier/listener/talk_mediator_impl.cc b/chrome/browser/sync/notifier/listener/talk_mediator_impl.cc index 8cffc9f..8f6804d 100644 --- a/chrome/browser/sync/notifier/listener/talk_mediator_impl.cc +++ b/chrome/browser/sync/notifier/listener/talk_mediator_impl.cc @@ -5,6 +5,7 @@ #include "chrome/browser/sync/notifier/listener/talk_mediator_impl.h" #include "base/logging.h" +#include "base/singleton.h" #include "chrome/browser/sync/engine/auth_watcher.h" #include "chrome/browser/sync/engine/syncer_thread.h" #include "chrome/browser/sync/notifier/listener/mediator_thread_impl.h" @@ -27,31 +28,19 @@ class SslInitializationSingleton { void RegisterClient() {} static SslInitializationSingleton* GetInstance() { - MutexLock lock(&mutex_); - if (!instance_.get()) { - instance_.reset(new SslInitializationSingleton()); - } - return instance_.get(); + return Singleton<SslInitializationSingleton>::get(); } private: - typedef PThreadScopedLock<PThreadMutex> MutexLock; + friend struct DefaultSingletonTraits<SslInitializationSingleton>; SslInitializationSingleton() { talk_base::InitializeSSL(); }; - // The single instance of this class. - static PThreadMutex mutex_; - static scoped_ptr<SslInitializationSingleton> instance_; - DISALLOW_COPY_AND_ASSIGN(SslInitializationSingleton); }; -// Declaration of class scoped static variables. -PThreadMutex SslInitializationSingleton::mutex_; -scoped_ptr<SslInitializationSingleton> SslInitializationSingleton::instance_; - TalkMediatorImpl::TalkMediatorImpl() : mediator_thread_(new MediatorThreadImpl()) { // Ensure the SSL library is initialized. |