tizen 2.4 release
[framework/web/wrt-commons.git] / modules / core / include / dpl / singleton_impl.h
old mode 100644 (file)
new mode 100755 (executable)
similarity index 86%
rename from modules_wearable/core/include/dpl/singleton_impl.h
rename to modules/core/include/dpl/singleton_impl.h
index 12dbf32..f4ba187
@@ -22,6 +22,8 @@
 #ifndef DPL_SINGLETON_IMPL_H
 #define DPL_SINGLETON_IMPL_H
 
+#include <functional>
+
 /*
  * WARNING!
  *
  */
 
 namespace DPL {
+
+template<typename Class>
+std::once_flag Singleton<Class>::m_onceFlag;
+
 template<typename Class>
 Singleton<Class>& Singleton<Class>::InternalInstance()
 {
-    static Singleton<Class> instance;
-    return instance;
+    static Singleton<Class>* instance = NULL;
+    std::call_once(m_onceFlag,
+      [] {
+        instance = new Singleton<Class>;
+      });
+    return *instance;
 }
 
 template<typename Class>