From a76e0bc42d7a45883636d692dbae7dbd533f1b1a Mon Sep 17 00:00:00 2001 From: KyungwooNoh Date: Thu, 17 Oct 2013 15:39:36 +0900 Subject: [PATCH] fixed PLM issue. Assert occured when an application was closed using back key. Change-Id: I8eacf19f7b3c5aa2fdf86e95b674738864ba9f5e Signed-off-by: KyungwooNoh --- src/base/runtime/FBaseRt_Event.cpp | 6 +++--- src/base/runtime/FBaseRt_EventManager.cpp | 11 +++++++---- src/base/runtime/FBaseRt_EventManager.h | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/base/runtime/FBaseRt_Event.cpp b/src/base/runtime/FBaseRt_Event.cpp index 5d6c58c..cb5f227 100755 --- a/src/base/runtime/FBaseRt_Event.cpp +++ b/src/base/runtime/FBaseRt_Event.cpp @@ -156,7 +156,7 @@ _Event::AddListener(const IEventListener& listener, bool calledByCallerThread) SysTryReturnResult(NID_BASE_RT, !exist, E_OBJ_ALREADY_EXIST, "[E_OBJ_ALREADY_EXIST] Listener already exist."); listenerInfo.pListener = &listener; - listenerInfo.listener = _EventManager::GetEventListenerObjectManager().Register(listener); + listenerInfo.listener = _EventManager::GetEventListenerObjectManager()->Register(listener); listenerInfo.eventManager = eventManager; r = __listeners.Add(listenerInfo); @@ -184,7 +184,7 @@ _Event::RemoveListener(const IEventListener& listener) r = __listeners.Remove(listenerInfo); SysTryLog(NID_BASE_RT, !IsFailed(r), "[%s] Propagating.", GetErrorMessage(r)); - _EventManager::GetEventListenerObjectManager().Unregister(listenerInfo.listener); + _EventManager::GetEventListenerObjectManager()->Unregister(listenerInfo.listener); exist = true; break; @@ -290,7 +290,7 @@ _Event::ProcessListeners(std::tr1::shared_ptr< IEventArg > arg) } } - pEventListener = _EventManager::GetEventListenerObjectManager().GetObject(listenerInfo.listener); + pEventListener = _EventManager::GetEventListenerObjectManager()->GetObject(listenerInfo.listener); if (pEventListener != null) { FireImpl(*pEventListener, *arg); diff --git a/src/base/runtime/FBaseRt_EventManager.cpp b/src/base/runtime/FBaseRt_EventManager.cpp index 4713ce3..92f3b9e 100644 --- a/src/base/runtime/FBaseRt_EventManager.cpp +++ b/src/base/runtime/FBaseRt_EventManager.cpp @@ -40,6 +40,8 @@ using namespace Tizen::Base::Runtime; namespace Tizen { namespace Base { namespace Runtime { +__thread _ObjectManagerT< IEventListener >* pObjectManager = null; + bool _EventManager::_EventMessage::operator ==(const _EventMessage& rhs) const { @@ -269,7 +271,7 @@ _EventManager::OnEventReceived(GIOChannel* pGIOChannel, GIOCondition condition, } else { - pEventListener = GetEventListenerObjectManager().GetObject(message.listener); + pEventListener = GetEventListenerObjectManager()->GetObject(message.listener); if (pEventListener != null) { pEvent->FireImpl(*pEventListener, *message.arg); @@ -408,12 +410,13 @@ _EventManager::GetEventObjectManager(void) return objectManager; } -_ObjectManagerT< IEventListener >& +_ObjectManagerT< IEventListener >* _EventManager::GetEventListenerObjectManager(void) { - static _ObjectManagerT< IEventListener > objectManager; + if(pObjectManager == null) + pObjectManager = new _ObjectManagerT< IEventListener >; - return objectManager; + return pObjectManager; } } } } // Tizen::Base::Runtime diff --git a/src/base/runtime/FBaseRt_EventManager.h b/src/base/runtime/FBaseRt_EventManager.h index 7aba053..0080edc 100644 --- a/src/base/runtime/FBaseRt_EventManager.h +++ b/src/base/runtime/FBaseRt_EventManager.h @@ -186,7 +186,7 @@ public: * * @since 2.0 */ - static _ObjectManagerT< IEventListener >& GetEventListenerObjectManager(void); + static _ObjectManagerT< IEventListener >* GetEventListenerObjectManager(void); private: _EventManager(const _EventManager& rhs); -- 2.7.4