X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fanimated-vector-image%2Fvector-animation-task.cpp;h=4bb24713a1bdc0b0ad75c617baa3bd24071f74da;hb=9555fd0add30a9ba1fd0bf1bf8f18f4b07f93e38;hp=c0d3802cb45df5bee5440ffc13f691584b5d9104;hpb=bc0c51819434f2d255e5e730388a1e7cec116613;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git 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 c0d3802..4bb2471 100644 --- a/dali-toolkit/internal/visuals/animated-vector-image/vector-animation-task.cpp +++ b/dali-toolkit/internal/visuals/animated-vector-image/vector-animation-task.cpp @@ -63,6 +63,8 @@ VectorAnimationTask::VectorAnimationTask(VisualFactoryCache& factoryCache) mConditionalWait(), mResourceReadySignal(), mLoadCompletedCallback(MakeCallback(this, &VectorAnimationTask::OnLoadCompleted)), + mCachedLayerInfo(), + mCachedMarkerInfo(), mPlayState(PlayState::STOPPED), mStopBehavior(DevelImageVisual::StopBehavior::CURRENT_FRAME), mLoopingMode(DevelImageVisual::LoopingMode::RESTART), @@ -87,7 +89,9 @@ VectorAnimationTask::VectorAnimationTask(VisualFactoryCache& factoryCache) mLoadRequest(false), mLoadFailed(false), mRasterized(false), - mKeepAnimation(false) + mKeepAnimation(false), + mLayerInfoCached(false), + mMarkerInfoCached(false) { mVectorRenderer.UploadCompletedSignal().Connect(this, &VectorAnimationTask::OnUploadCompleted); } @@ -484,12 +488,38 @@ void VectorAnimationTask::SetLoopingMode(DevelImageVisual::LoopingMode::Type loo void VectorAnimationTask::GetLayerInfo(Property::Map& map) const { - mVectorRenderer.GetLayerInfo(map); + // Fast-out if file is loading, or load failed. + if(mLoadFailed || IsLoadRequested()) + { + return; + } + + if(DALI_UNLIKELY(!mLayerInfoCached)) + { + // Update only 1 time. + mLayerInfoCached = true; + mVectorRenderer.GetLayerInfo(mCachedLayerInfo); + } + + map = mCachedLayerInfo; } void VectorAnimationTask::GetMarkerInfo(Property::Map& map) const { - mVectorRenderer.GetMarkerInfo(map); + // Fast-out if file is loading, or load failed. + if(mLoadFailed || IsLoadRequested()) + { + return; + } + + if(DALI_UNLIKELY(!mMarkerInfoCached)) + { + // Update only 1 time. + mMarkerInfoCached = true; + mVectorRenderer.GetMarkerInfo(mCachedMarkerInfo); + } + + map = mCachedMarkerInfo; } VectorAnimationTask::ResourceReadySignalType& VectorAnimationTask::ResourceReadySignal()