summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2010-05-28 15:13:30 -0700
committerMathias Agopian <mathias@google.com>2010-05-28 15:13:30 -0700
commitcdfd5fe2c89a30a31f9de5a5481e8997f014a89b (patch)
tree0c5bbe8bed876618e46e057b44649f0715fcf56f
parent009668bf8a51a3d6e8ee2827691c9b0285503ba1 (diff)
downloadframeworks_base-cdfd5fe2c89a30a31f9de5a5481e8997f014a89b.zip
frameworks_base-cdfd5fe2c89a30a31f9de5a5481e8997f014a89b.tar.gz
frameworks_base-cdfd5fe2c89a30a31f9de5a5481e8997f014a89b.tar.bz2
Fix a typo in Singleton<>
it could cause the sLock field to be emitted several times in different compilation unit. it also prevented to have 2 Singleton<> in the same file.
-rw-r--r--include/utils/Singleton.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/include/utils/Singleton.h b/include/utils/Singleton.h
index bc7626a8..3b975b4 100644
--- a/include/utils/Singleton.h
+++ b/include/utils/Singleton.h
@@ -54,11 +54,13 @@ private:
* (eg: <TYPE>.cpp) to create the static instance of Singleton<>'s attributes,
* and avoid to have a copy of them in each compilation units Singleton<TYPE>
* is used.
+ * NOTE: we use a version of Mutex ctor that takes a parameter, because
+ * for some unknown reason using the default ctor doesn't emit the variable!
*/
-#define ANDROID_SINGLETON_STATIC_INSTANCE(TYPE) \
- template class Singleton< TYPE >; \
- template< class TYPE > Mutex Singleton< TYPE >::sLock; \
+#define ANDROID_SINGLETON_STATIC_INSTANCE(TYPE) \
+ template class Singleton< TYPE >; \
+ template<> Mutex Singleton< TYPE >::sLock(Mutex::PRIVATE); \
template<> TYPE* Singleton< TYPE >::sInstance(0);