author | simon <simon> | 2002-12-14 17:55:12 (UTC) |
---|---|---|
committer | simon <simon> | 2002-12-14 17:55:12 (UTC) |
commit | 309c34a61e7cf6a199275c32c00ec1eaaa511d9b (patch) (unidiff) | |
tree | 5aa46eaefc040373397fcb3157ae6b5dd46a9c49 | |
parent | 03c4518324c328c530eb795705b6a4281d65055a (diff) | |
download | opie-309c34a61e7cf6a199275c32c00ec1eaaa511d9b.zip opie-309c34a61e7cf6a199275c32c00ec1eaaa511d9b.tar.gz opie-309c34a61e7cf6a199275c32c00ec1eaaa511d9b.tar.bz2 |
- make it thread-safe
-rw-r--r-- | noncore/multimedia/opieplayer2/singleton.h | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/noncore/multimedia/opieplayer2/singleton.h b/noncore/multimedia/opieplayer2/singleton.h index 83e228f..825344e 100644 --- a/noncore/multimedia/opieplayer2/singleton.h +++ b/noncore/multimedia/opieplayer2/singleton.h | |||
@@ -22,2 +22,4 @@ | |||
22 | 22 | ||
23 | #include "threadutil.h" | ||
24 | |||
23 | template <class Product> | 25 | template <class Product> |
@@ -44,4 +46,7 @@ public: | |||
44 | { | 46 | { |
45 | if ( !s_self ) | 47 | if ( !s_self ) { |
46 | s_self = Creator<T>::create(); | 48 | ThreadUtil::AutoLock lock( s_guard ); |
49 | if ( !s_self ) | ||
50 | s_self = Creator<T>::create(); | ||
51 | } | ||
47 | return *s_self; | 52 | return *s_self; |
@@ -60,2 +65,3 @@ private: | |||
60 | static T *s_self; | 65 | static T *s_self; |
66 | static ThreadUtil::Mutex s_guard; | ||
61 | }; | 67 | }; |
@@ -65,2 +71,5 @@ T *Singleton<T, Creator>::s_self = 0; | |||
65 | 71 | ||
72 | template <class T, template <class> class Creator> | ||
73 | ThreadUtil::Mutex Singleton<T, Creator>::s_guard; | ||
74 | |||
66 | #endif // SINGLETON_H | 75 | #endif // SINGLETON_H |