mPlacementActor(),
mVectorRasterizeThread(),
mLoopCount( LOOP_FOREVER ),
- mActionStatus( DevelAnimatedVectorImageVisual::Action::STOP ),
- mNeedToSetRenderer( true )
+ mActionStatus( DevelAnimatedVectorImageVisual::Action::STOP )
{
// the rasterized image is with pre-multiplied alpha format
mImpl->mFlags |= Impl::IS_PREMULTIPLIED_ALPHA;
Geometry geometry = mFactoryCache.GetGeometry( VisualFactoryCache::QUAD_GEOMETRY );
- mNeedToSetRenderer = true;
-
mImpl->mRenderer = Renderer::New( geometry, shader );
TextureSet textureSet = TextureSet::New();
uint32_t width = static_cast< uint32_t >( visualSize.width );
uint32_t height = static_cast< uint32_t >( visualSize.height );
- mVectorRasterizeThread = std::unique_ptr< VectorRasterizeThread >( new VectorRasterizeThread( mUrl.GetUrl() ) );
+ mVectorRasterizeThread = std::unique_ptr< VectorRasterizeThread >( new VectorRasterizeThread( mUrl.GetUrl(), mImpl->mRenderer, width, height ) );
- mVectorRasterizeThread->SetRenderer( mImpl->mRenderer );
- mVectorRasterizeThread->SetSize( width, height );
mVectorRasterizeThread->SetResourceReadyCallback( new EventThreadCallback( MakeCallback( this, &AnimatedVectorImageVisual::OnResourceReady ) ) );
mVectorRasterizeThread->SetAnimationFinishedCallback( new EventThreadCallback( MakeCallback( this, &AnimatedVectorImageVisual::OnAnimationFinished ) ) );
mVectorRasterizeThread->SetLoopCount( mLoopCount );
mVectorRasterizeThread->SetPlayRange( mPlayRange );
mVectorRasterizeThread->Start();
+
+ if( mActionStatus == DevelAnimatedVectorImageVisual::Action::PLAY )
+ {
+ mVectorRasterizeThread->StartAnimation();
+ DevelStage::SetRenderingBehavior( Stage::GetCurrent(), DevelStage::Rendering::CONTINUOUSLY );
+ }
+ else
+ {
+ // Render one frame
+ mVectorRasterizeThread->RenderFrame();
+ }
}
else
{
uint32_t width = static_cast< uint32_t >( visualSize.width );
uint32_t height = static_cast< uint32_t >( visualSize.height );
- mVectorRasterizeThread->SetRenderer( mImpl->mRenderer );
mVectorRasterizeThread->SetSize( width, height );
}
-
- mNeedToSetRenderer = false;
-
- if( mActionStatus == DevelAnimatedVectorImageVisual::Action::PLAY )
- {
- mVectorRasterizeThread->StartAnimation();
- DevelStage::SetRenderingBehavior( Stage::GetCurrent(), DevelStage::Rendering::CONTINUOUSLY );
- }
- else
- {
- // Render one frame
- mVectorRasterizeThread->RenderFrame();
- }
}
}
}
{
if( IsOnStage())
{
- // When renderer has changed, do not StartAnimation before SetRenderer(newOne)
- if( mVectorRasterizeThread && !mNeedToSetRenderer )
+ if( mVectorRasterizeThread )
{
mVectorRasterizeThread->StartAnimation();
DevelStage::SetRenderingBehavior( Stage::GetCurrent(), DevelStage::Rendering::CONTINUOUSLY ); //TODO: Should manage this globally
} // unnamed namespace
-VectorRasterizeThread::VectorRasterizeThread( const std::string& url )
+VectorRasterizeThread::VectorRasterizeThread( const std::string& url, Renderer renderer, uint32_t width, uint32_t height )
: mUrl( url ),
mVectorRenderer(),
mConditionalWait(),
mTotalFrame( 0 ),
mStartFrame( 0 ),
mEndFrame( 0 ),
- mWidth( 0 ),
- mHeight( 0 ),
+ mWidth( width ),
+ mHeight( height ),
mLoopCount( LOOP_FOREVER ),
mCurrentLoop( 0 ),
mNeedRender( false ),
mResourceReady( false ),
mLogFactory( Dali::Adaptor::Get().GetLogFactory() )
{
- mVectorRenderer = VectorAnimationRenderer::New( mUrl );
+ mVectorRenderer = VectorAnimationRenderer::New( mUrl, renderer, width, height );
}
VectorRasterizeThread::~VectorRasterizeThread()
}
}
-void VectorRasterizeThread::SetRenderer( Renderer renderer )
-{
- ConditionalWait::ScopedLock lock( mConditionalWait );
-
- mVectorRenderer.SetRenderer( renderer );
-
- // Need to trigger resource ready again
- mResourceReady = false;
-
- DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "VectorRasterizeThread::SetRenderer\n" );
-}
-
void VectorRasterizeThread::SetSize( uint32_t width, uint32_t height )
{
ConditionalWait::ScopedLock lock( mConditionalWait );
* @brief Constructor.
*
* @param[in] url The url of the vector animation file
+ * @param[in] renderer The renderer used to render the image
+ * @param[in] width The width of the content
+ * @param[in] height The height of the content
*/
- VectorRasterizeThread( const std::string& url );
+ VectorRasterizeThread( const std::string& url, Renderer renderer, uint32_t width, uint32_t height );
/**
* @brief Destructor.
virtual ~VectorRasterizeThread();
/**
- * @brief Sets the renderer used to display the result image.
- *
- * @param[in] renderer The renderer used to display the result image
- */
- void SetRenderer( Renderer renderer );
-
- /**
* @brief Sets the target image size.
*
* @param[in] width The target image width