return Internal::Adaptor::GetImplementation( *this ).GetMarkerInfo( marker, startFrame, endFrame );
}
+void VectorAnimationRenderer::IgnoreRenderedFrames()
+{
+}
+
VectorAnimationRenderer::UploadCompletedSignalType& VectorAnimationRenderer::UploadCompletedSignal()
{
return Internal::Adaptor::GetImplementation( *this ).UploadCompletedSignal();
mCurrentLoopUpdated( false ),
mForward( true ),
mUpdateFrameNumber( false ),
- mNeedAnimationFinishedTrigger( true )
+ mNeedAnimationFinishedTrigger( true ),
+ mForceRender( false )
{
Initialize();
}
}
// Make sure the range specified is between 0 and the total frame number
- if( startFrame >= 0 && startFrame < mTotalFrame && endFrame >= 0 && endFrame < mTotalFrame )
+ if( startFrame < mTotalFrame && endFrame < mTotalFrame )
{
// If the range is not in order swap values
if( startFrame > endFrame )
if( !renderSuccess )
{
DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "VectorAnimationTask::Rasterize: Rendering failed. Try again later.[%d] [%p]\n", currentFrame, this );
- mUpdateFrameNumber = false;
- if( !resourceReady )
+ if( mForceRender )
{
- ConditionalWait::ScopedLock lock( mConditionalWait );
- mResourceReady = false;
+ // Ignore previous frames and retry
+ mVectorRenderer.IgnoreRenderedFrames();
+ renderSuccess = mVectorRenderer.Render( currentFrame );
+ mForceRender = false;
+ }
+ else
+ {
+ mForceRender = true;
+ }
+
+ if( !renderSuccess )
+ {
+ mUpdateFrameNumber = false;
+ if( !resourceReady )
+ {
+ ConditionalWait::ScopedLock lock( mConditionalWait );
+ mResourceReady = false;
+ }
}
}
+ else
+ {
+ mForceRender = false;
+ }
}
if( stopped && renderSuccess )