, __pEventManager(null)
, __pEvent(null)
, __pGmainContext(null)
+ , __pLock(null)
{
+ __pLock = new (std::nothrow) Tizen::Base::Runtime::Mutex();
+ SysTryLog(NID_BASE, __pLock != null, "Failed to allocate the mutex instance");
+ result r = __pLock->Create();
+ SysTryLog(NID_BASE, !IsFailed(r), "Failed to create the mutex instance");
}
_EventDrivenThreadImpl::~_EventDrivenThreadImpl(void)
{
result r = E_SUCCESS;
- _EventDrivenThreadEventArg* pEventArg = new (std::nothrow) _EventDrivenThreadEventArg(EVENT_DRIVEN_THREAD_EVENT_TYPE_STOP
- , 0, null);
+ _EventDrivenThreadEventArg* pEventArg = new (std::nothrow) _EventDrivenThreadEventArg(EVENT_DRIVEN_THREAD_EVENT_TYPE_STOP, 0, null);
+ SysTryReturnResult(NID_BASE, pEventArg != null, E_OUT_OF_MEMORY, "Not enough memory.");
+
+ r = __pLock->Acquire();
+ SysTryLog(NID_BASE, !IsFailed(r), "Failed to acquire mutex");
+
if (__pEvent)
{
r = __pEvent->Fire(*pEventArg);
- SysTryReturn(NID_BASE_RT, !IsFailed(r), r, r, "[%s] Failed to send a stop event", GetErrorMessage(r));
+ SysTryLog(NID_BASE_RT, !IsFailed(r), "[%s] Failed to send a stop event", GetErrorMessage(r));
}
else
{
__pendingEvents.Add(pEventArg);
}
+ r = __pLock->Release();
+ SysTryLog(NID_BASE, !IsFailed(r), "Failed to release mutex");
- return E_SUCCESS;
+ return r;
}
Tizen::Base::Object*
result r = E_SUCCESS;
_EventDrivenThreadEventArg* pArg = null;
+ r = __pLock->Acquire();
+ SysTryLog(NID_BASE, !IsFailed(r), "Failed to acquire mutex");
+
for (int i = 0; i < __pendingEvents.GetCount(); i++)
{
__pendingEvents.GetAt(i, pArg);
continue;
}
}
+ r = __pLock->Release();
+ SysTryLog(NID_BASE, !IsFailed(r), "Failed to release mutex");
g_main_loop_run(__pGMainLoop);
result
_EventDrivenThreadImpl::SendUserEvent(RequestId requestId, const Tizen::Base::Collection::IList* pArgs)
{
- result r = E_SUCCESS;
+ result r = __pLock->Acquire();
+ SysTryLog(NID_BASE, !IsFailed(r), "Failed to acquire mutex");
+
_EventDrivenThreadEventArg* pEventArg = null;
pEventArg = new (std::nothrow) _EventDrivenThreadEventArg(EVENT_DRIVEN_THREAD_EVENT_TYPE_USER_EVENT, requestId, pArgs);
{
__pendingEvents.Add(pEventArg);
}
+ r = __pLock->Release();
+ SysTryLog(NID_BASE, !IsFailed(r), "Failed to release mutex");
return r;
}