summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornick@chromium.org <nick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-01 23:14:53 +0000
committernick@chromium.org <nick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-01 23:14:53 +0000
commit41a56e42522b728dc3002800e7b38322397a8121 (patch)
tree6d4a588e68c292b90562110858808c5107f54df2
parentcdc6dffa8a21f8d362de4cf79de3bdc3a6b96384 (diff)
downloadchromium_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.cc17
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.