SetShader();
}
-
- DALI_LOG_RELEASE_INFO( "TizenVectorAnimationRenderer::SetRenderer [%p]\n", this );
}
void TizenVectorAnimationRenderer::SetSize( uint32_t width, uint32_t height )
{
Dali::Mutex::ScopedLock lock( mMutex );
- if( !mTbmQueue || !mVectorRenderer )
+ if( !mTbmQueue || !mVectorRenderer || !mTargetSurface )
{
return false;
}
- if( tbm_surface_queue_can_dequeue( mTbmQueue, 0 ) )
+ int canDequeue = tbm_surface_queue_can_dequeue( mTbmQueue, 0 );
+ if( !canDequeue )
{
- tbm_surface_h tbmSurface;
+ // Ignore the previous image which is inserted to the queue.
+ mTargetSurface->IgnoreSourceImage();
- if( tbm_surface_queue_dequeue( mTbmQueue, &tbmSurface ) != TBM_SURFACE_QUEUE_ERROR_NONE )
+ // Check again
+ canDequeue = tbm_surface_queue_can_dequeue( mTbmQueue, 0 );
+ if( !canDequeue )
{
- DALI_LOG_ERROR( "Failed to dequeue a tbm_surface [%p]\n", this );
return false;
}
+ }
- tbm_surface_info_s info;
- tbm_surface_map( tbmSurface, TBM_OPTION_WRITE, &info );
+ tbm_surface_h tbmSurface;
- rlottie::Surface surface;
- bool existing = false;
+ if( tbm_surface_queue_dequeue( mTbmQueue, &tbmSurface ) != TBM_SURFACE_QUEUE_ERROR_NONE )
+ {
+ DALI_LOG_ERROR( "Failed to dequeue a tbm_surface [%p]\n", this );
+ return false;
+ }
- if( !mResourceReady )
- {
- // Need to reset buffer list
- ResetBuffers();
- }
- else
+ tbm_surface_info_s info;
+ tbm_surface_map( tbmSurface, TBM_OPTION_WRITE, &info );
+
+ rlottie::Surface surface;
+ bool existing = false;
+
+ if( !mResourceReady )
+ {
+ // Need to reset buffer list
+ ResetBuffers();
+ }
+ else
+ {
+ for( auto&& iter : mBuffers )
{
- for( auto&& iter : mBuffers )
+ if( iter.first == tbmSurface )
{
- if( iter.first == tbmSurface )
- {
- // Find the buffer in the existing list
- existing = true;
- surface = iter.second;
- break;
- }
+ // Find the buffer in the existing list
+ existing = true;
+ surface = iter.second;
+ break;
}
}
+ }
- if( !existing )
+ if( !existing )
+ {
+ unsigned char* buffer = info.planes[0].ptr;
+ if( !buffer )
{
- unsigned char* buffer = info.planes[0].ptr;
- if( !buffer )
- {
- DALI_LOG_ERROR( "TizenVectorAnimationRenderer::Render: tbm buffer pointer is null! [%p]\n", this );
- tbm_surface_unmap( tbmSurface );
- return false;
- }
-
- tbm_surface_internal_ref( tbmSurface );
+ DALI_LOG_ERROR( "TizenVectorAnimationRenderer::Render: tbm buffer pointer is null! [%p]\n", this );
+ tbm_surface_unmap( tbmSurface );
+ return false;
+ }
- // Create Surface object
- surface = rlottie::Surface( reinterpret_cast< uint32_t* >( buffer ), mWidth, mHeight, static_cast< size_t >( info.planes[0].stride ) );
+ tbm_surface_internal_ref( tbmSurface );
- // Push the buffer
- mBuffers.push_back( SurfacePair( tbmSurface, surface ) );
- }
+ // Create Surface object
+ surface = rlottie::Surface( reinterpret_cast< uint32_t* >( buffer ), mWidth, mHeight, static_cast< size_t >( info.planes[0].stride ) );
- // Render the frame
- mVectorRenderer->renderSync( frameNumber, surface );
+ // Push the buffer
+ mBuffers.push_back( SurfacePair( tbmSurface, surface ) );
+ }
- tbm_surface_unmap( tbmSurface );
+ // Render the frame
+ mVectorRenderer->renderSync( frameNumber, surface );
- tbm_surface_queue_enqueue( mTbmQueue, tbmSurface );
+ tbm_surface_unmap( tbmSurface );
- if( !mResourceReady )
- {
- mPreviousTexture = mRenderedTexture; // It is used to destroy the object in the main thread.
- mRenderedTexture = mTexture;
- mResourceReady = true;
- mResourceReadyTriggered = true;
+ tbm_surface_queue_enqueue( mTbmQueue, tbmSurface );
- TizenVectorAnimationManager::Get().TriggerEvent( *this );
+ if( !mResourceReady )
+ {
+ mPreviousTexture = mRenderedTexture; // It is used to destroy the object in the main thread.
+ mRenderedTexture = mTexture;
+ mResourceReady = true;
+ mResourceReadyTriggered = true;
- DALI_LOG_RELEASE_INFO( "TizenVectorAnimationRenderer::Render: Resource ready [current = %d] [%p]\n", frameNumber, this );
- }
+ TizenVectorAnimationManager::Get().TriggerEvent( *this );
- return true;
+ DALI_LOG_RELEASE_INFO( "TizenVectorAnimationRenderer::Render: Resource ready [current = %d] [%p]\n", frameNumber, this );
}
- return false;
+ return true;
}
uint32_t TizenVectorAnimationRenderer::GetTotalFrameNumber() const
{
width = mDefaultWidth;
height = mDefaultHeight;
-
- DALI_LOG_RELEASE_INFO( "TizenVectorAnimationRenderer::GetDefaultSize: width = %d, height = %d [%p]\n", width, height, this );
}
void TizenVectorAnimationRenderer::GetLayerInfo( Property::Map& map ) const