mRenderer(),
mTexture(),
mRenderedTexture(),
+ mPreviousTexture(),
mTargetSurface(),
mVectorRenderer(),
mUploadCompletedSignal(),
Dali::Mutex::ScopedLock lock( mMutex );
ResetBuffers();
+ DALI_LOG_RELEASE_INFO( "TizenVectorAnimationRenderer::~TizenVectorAnimationRenderer: this = %p\n", this );
}
bool TizenVectorAnimationRenderer::Initialize( const std::string& url )
mVectorRenderer = rlottie::Animation::loadFromFile( mUrl );
if( !mVectorRenderer )
{
- DALI_LOG_ERROR( "Failed to load a Lottie file [%s]\n", mUrl.c_str() );
+ DALI_LOG_ERROR( "Failed to load a Lottie file [%s] [%p]\n", mUrl.c_str(), this );
return false;
}
mRenderer.Reset();
mTexture.Reset();
mRenderedTexture.Reset();
+ mPreviousTexture.Reset();
mVectorRenderer.reset();
mTargetSurface = nullptr;
if( !mResourceReady )
{
+ mPreviousTexture = mRenderedTexture; // It is used to destroy the object in the main thread.
mRenderedTexture = mTexture;
mResourceReady = true;
mResourceReadyTriggered = true;
mUploadCompletedSignal.Emit();
}
+
+ mPreviousTexture.Reset();
}
void TizenVectorAnimationRenderer::SetShader()
Dali::Renderer mRenderer; ///< Renderer
Dali::Texture mTexture; ///< Texture
Dali::Texture mRenderedTexture; ///< Rendered Texture
+ Dali::Texture mPreviousTexture; ///< Previous rendered texture
NativeImageSourceQueuePtr mTargetSurface; ///< The target surface
std::unique_ptr< rlottie::Animation > mVectorRenderer; ///< The vector animation renderer
UploadCompletedSignalType mUploadCompletedSignal; ///< Upload completed signal