Do not use bitfield for thread sensitive values
Their was some mysterious bugs occured on real world application.
if(needRasterize)
{
mNeedToSleep = false;
}
DALI_TRACE_END_WITH_MESSAGE_GENERATOR(gTraceFilter, "VECTOR_ANIMATION_THREAD_COMPLETED_TASK", [&](std::ostringstream& oss) {
oss << "[w:" << mWorkingTasks.size() << ",c:" << mCompletedTasks.size() << ",r?" << needRasterize << ",s?" << mNeedToSleep << "]";
});
For like this code, we got r?1,s?1 logs.
mean, mNeedToSleep become true even if needRasterize is true.
mForceRenderOnce = true;
DALI_LOG_DEBUG_INFO("VectorAnimationThread::mEventTrigger Triggered!\n");
The mForceRenderOnce value didn't depend on mConditionalWait, the race condition
might occured.
To avoid this kind of issue, let we seperate memory area for each values
if they are thread sensitive.
Change-Id: Ie45d0c273ad318c46baf72a1c8462792a35460ad
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>