projects
/
platform
/
core
/
uifw
/
dali-toolkit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
(Vector) Let we send finished signal only for matched sent play/stop from visual
[platform/core/uifw/dali-toolkit.git]
/
dali-toolkit
/
internal
/
visuals
/
animated-vector-image
/
vector-animation-thread.cpp
diff --git
a/dali-toolkit/internal/visuals/animated-vector-image/vector-animation-thread.cpp
b/dali-toolkit/internal/visuals/animated-vector-image/vector-animation-thread.cpp
index
3ee2d5d
..
b07ba5b
100644
(file)
--- a/
dali-toolkit/internal/visuals/animated-vector-image/vector-animation-thread.cpp
+++ b/
dali-toolkit/internal/visuals/animated-vector-image/vector-animation-thread.cpp
@@
-159,12
+159,12
@@
void VectorAnimationThread::OnAwakeFromSleep()
}
}
}
}
-void VectorAnimationThread::AddEventTriggerCallback(CallbackBase* callback)
+void VectorAnimationThread::AddEventTriggerCallback(CallbackBase* callback
, uint32_t argument
)
{
Mutex::ScopedLock lock(mEventTriggerMutex);
if(!mDestroyThread)
{
{
Mutex::ScopedLock lock(mEventTriggerMutex);
if(!mDestroyThread)
{
- mTriggerEventCallbacks.
push_back(callback
);
+ mTriggerEventCallbacks.
emplace_back(callback, argument
);
if(!mEventTriggered)
{
if(!mEventTriggered)
{
@@
-179,7
+179,7
@@
void VectorAnimationThread::RemoveEventTriggerCallbacks(CallbackBase* callback)
Mutex::ScopedLock lock(mEventTriggerMutex);
if(!mDestroyThread)
{
Mutex::ScopedLock lock(mEventTriggerMutex);
if(!mDestroyThread)
{
- auto iter = std::remove
(mTriggerEventCallbacks.begin(), mTriggerEventCallbacks.end(), callback
);
+ auto iter = std::remove
_if(mTriggerEventCallbacks.begin(), mTriggerEventCallbacks.end(), [&callback](std::pair<CallbackBase*, uint32_t>& item) { return item.first == callback; }
);
mTriggerEventCallbacks.erase(iter, mTriggerEventCallbacks.end());
}
}
mTriggerEventCallbacks.erase(iter, mTriggerEventCallbacks.end());
}
}
@@
-276,27
+276,32
@@
void VectorAnimationThread::Rasterize()
void VectorAnimationThread::OnEventCallbackTriggered()
{
void VectorAnimationThread::OnEventCallbackTriggered()
{
- while(
CallbackBase* callback = GetNextEventCallback()
)
+ while(
true
)
{
{
- CallbackBase::Execute(*callback);
+ auto callbackPair = GetNextEventCallback();
+ if(callbackPair.first == nullptr)
+ {
+ break;
+ }
+ CallbackBase::Execute(*callbackPair.first, callbackPair.second);
}
}
}
}
-
CallbackBase*
VectorAnimationThread::GetNextEventCallback()
+
std::pair<CallbackBase*, uint32_t>
VectorAnimationThread::GetNextEventCallback()
{
Mutex::ScopedLock lock(mEventTriggerMutex);
if(!mDestroyThread)
{
if(!mTriggerEventCallbacks.empty())
{
{
Mutex::ScopedLock lock(mEventTriggerMutex);
if(!mDestroyThread)
{
if(!mTriggerEventCallbacks.empty())
{
- auto
iter
= mTriggerEventCallbacks.begin();
-
CallbackBase* callback
= *iter;
+ auto
iter
= mTriggerEventCallbacks.begin();
+
auto callbackIdPair
= *iter;
mTriggerEventCallbacks.erase(iter);
mTriggerEventCallbacks.erase(iter);
- return callback;
+ return callback
IdPair
;
}
mEventTriggered = false;
}
}
mEventTriggered = false;
}
- return
nullptr
;
+ return
std::make_pair(nullptr, 0u)
;
}
VectorAnimationThread::SleepThread::SleepThread(CallbackBase* callback)
}
VectorAnimationThread::SleepThread::SleepThread(CallbackBase* callback)