Singleton guard thread removal
authorTomasz Iwanek <t.iwanek@samsung.com>
Tue, 22 Jan 2013 07:57:42 +0000 (08:57 +0100)
committerGerrit Code Review <gerrit2@kim11>
Wed, 23 Jan 2013 14:58:46 +0000 (23:58 +0900)
[Issue#]       N/A
[Bug]          Guard threads are not used
[Cause]        N/A
[Solution]     N/A
[Verification] Build wrt-commons,wrt. Runs any widget correctly (this should be enogh to check singleton as guard were not used)

Change-Id: Ia91f6f60c812436804842d9414274c4f9eea3e4d

modules/core/include/dpl/singleton.h
modules/core/include/dpl/singleton_impl.h
modules/core/include/dpl/singleton_safe_impl.h

index 4e5b281..44886d9 100644 (file)
@@ -45,7 +45,6 @@ private:
     }
 
     typedef Optional<Thread *> OptionalThreadPtr;
-    OptionalThreadPtr m_guard;
 
     static Singleton &InternalInstance();
 
@@ -55,10 +54,6 @@ public:
     }
 
     static Class &Instance();
-
-    // Thread guarding
-    static void SetThreadGuard(Thread *thread);
-    static void ResetThreadGuard();
 };
 
 } // namespace DPL
index 365ec15..6ebe48c 100644 (file)
@@ -44,37 +44,13 @@ template<typename Class>
 Class &Singleton<Class>::Instance()
 {
     Singleton<Class>& instance = Singleton<Class>::InternalInstance();
-
-    if (!!instance.m_guard)
-    {
-        Assert(Thread::GetCurrentThread() == *instance.m_guard &&
-               "Singleton thread guard failed. A forbidden call from foreign thread was detected!");
-    }
-
     return instance;
 }
 
-// Thread guarding
-template<typename Class>
-void Singleton<Class>::SetThreadGuard(Thread *thread)
-{
-    Singleton<Class>& instance = Singleton<Class>::InternalInstance();
-    instance.m_guard = OptionalThreadPtr(thread);
-}
-
-template<typename Class>
-void Singleton<Class>::ResetThreadGuard()
-{
-    Singleton<Class>& instance = Singleton<Class>::InternalInstance();
-    instance.m_guard = OptionalThreadPtr::Null;
-}
-
 } // namespace DPL
 
 #define IMPLEMENT_SINGLETON(Type)                                           \
 template DPL::Singleton<Type>& DPL::Singleton<Type>::InternalInstance();    \
 template Type& DPL::Singleton<Type>::Instance();                            \
-template void DPL::Singleton<Type>::SetThreadGuard(DPL::Thread *thread);    \
-template void DPL::Singleton<Type>::ResetThreadGuard();
 
 #endif // DPL_SINGLETON_IMPL_H
index 8fbe009..6bf6451 100644 (file)
@@ -35,31 +35,11 @@ template<>                                                                     \
 Class &Singleton<Class>::Instance()                                            \
 {                                                                              \
     Singleton<Class>& instance = Singleton<Class>::InternalInstance();         \
-    if (!!instance.m_guard)                                                    \
-    {                                                                          \
-        Assert(Thread::GetCurrentThread() == *instance.m_guard &&              \
-               "Singleton thread guard failed. A forbidden call from foreign thread was detected!");\
-    }                                                                          \
     return instance;                                                           \
 }                                                                              \
                                                                                \
-template<>                                                                     \
-void Singleton<Class>::SetThreadGuard(Thread *thread)                          \
-{                                                                              \
-    Singleton<Class>& instance = Singleton<Class>::InternalInstance();         \
-    instance.m_guard = OptionalThreadPtr(thread);                              \
-}                                                                              \
-                                                                               \
-template<>                                                                     \
-void Singleton<Class>::ResetThreadGuard()                                      \
-{                                                                              \
-    Singleton<Class>& instance = Singleton<Class>::InternalInstance();         \
-    instance.m_guard = OptionalThreadPtr::Null;                                \
-}                                                                              \
 template Singleton<Class>& Singleton<Class>::InternalInstance();               \
 template Class& Singleton<Class>::Instance();                                  \
-template void Singleton<Class>::SetThreadGuard(Thread *thread);                \
-template void Singleton<Class>::ResetThreadGuard();                            \
 } // namespace DPL