From 8ff17142c5f47dacaa6ae247b92e6d6b5a16d8ac Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Tue, 22 May 2007 14:17:44 +0000 Subject: Simpilified Singleton implementation and usage. svn-id: r26922 --- common/config-manager.cpp | 2 -- common/singleton.h | 13 +++---------- 2 files changed, 3 insertions(+), 12 deletions(-) (limited to 'common') diff --git a/common/config-manager.cpp b/common/config-manager.cpp index f8426f18d0..41f3c1a7e9 100644 --- a/common/config-manager.cpp +++ b/common/config-manager.cpp @@ -33,8 +33,6 @@ #include "common/file.h" #include "common/util.h" -DECLARE_SINGLETON(Common::ConfigManager); - #ifdef __PLAYSTATION2__ #include "backends/platform/ps2/systemps2.h" #endif diff --git a/common/singleton.h b/common/singleton.h index 5e72e72230..f26324999e 100644 --- a/common/singleton.h +++ b/common/singleton.h @@ -37,8 +37,6 @@ private: Singleton(const Singleton&); Singleton& operator= (const Singleton&); - static T* _singleton; - /** * The default object factory used by the template class Singleton. * By specialising this template function, one can make a singleton use a @@ -58,16 +56,13 @@ public: public: static T& instance() { - // TODO: We aren't thread safe. For now we ignore it since the - // only thing using this singleton template is the config manager, - // and that is first instantiated long before any threads. + // TODO: We aren't thread safe. // TODO: We don't leak, but the destruction order is nevertheless // semi-random. If we use multiple singletons, the destruction // order might become an issue. There are various approaches // to solve that problem, but for now this is sufficient - if (!_singleton) - _singleton = T::makeInstance(); - return *_singleton; + static T *instance = T::makeInstance(); + return *instance; } protected: Singleton() { } @@ -80,8 +75,6 @@ protected: typedef T SingletonBaseType; }; -#define DECLARE_SINGLETON(T) template<> T* Common::Singleton::_singleton=0 - } // End of namespace Common #endif -- cgit v1.2.3