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
Merge "(Vector) Fix memory leak" into devel/master
[platform/core/uifw/dali-toolkit.git]
/
dali-toolkit
/
internal
/
visuals
/
animated-vector-image
/
vector-animation-task.cpp
diff --git
a/dali-toolkit/internal/visuals/animated-vector-image/vector-animation-task.cpp
b/dali-toolkit/internal/visuals/animated-vector-image/vector-animation-task.cpp
index
6072ce5
..
55968e1
100644
(file)
--- a/
dali-toolkit/internal/visuals/animated-vector-image/vector-animation-task.cpp
+++ b/
dali-toolkit/internal/visuals/animated-vector-image/vector-animation-task.cpp
@@
-74,7
+74,8
@@
VectorAnimationTask::VectorAnimationTask( VisualFactoryCache& factoryCache, cons
mForward( true ),
mUpdateFrameNumber( false ),
mNeedAnimationFinishedTrigger( true ),
mForward( true ),
mUpdateFrameNumber( false ),
mNeedAnimationFinishedTrigger( true ),
- mAnimationDataUpdated( false )
+ mAnimationDataUpdated( false ),
+ mDestroyTask( false )
{
Initialize();
}
{
Initialize();
}
@@
-95,6
+96,8
@@
void VectorAnimationTask::Finalize()
}
mVectorRenderer.Finalize();
}
mVectorRenderer.Finalize();
+
+ mDestroyTask = true;
}
void VectorAnimationTask::SetRenderer( Renderer renderer )
}
void VectorAnimationTask::SetRenderer( Renderer renderer )
@@
-372,6
+375,15
@@
bool VectorAnimationTask::Rasterize()
bool stopped = false;
uint32_t currentFrame;
bool stopped = false;
uint32_t currentFrame;
+ {
+ ConditionalWait::ScopedLock lock( mConditionalWait );
+ if( mDestroyTask )
+ {
+ // The task will be destroyed. We don't need rasterization.
+ return false;
+ }
+ }
+
ApplyAnimationData();
if( mPlayState == PlayState::PLAYING && mUpdateFrameNumber )
ApplyAnimationData();
if( mPlayState == PlayState::PLAYING && mUpdateFrameNumber )