+ // Make sure the range specified is between 0 and the total frame number
+ if( ( startFrame < mTotalFrame ) && ( endFrame < mTotalFrame ) )
+ {
+ // If the range is not in order swap values
+ if( startFrame > endFrame )
+ {
+ uint32_t temp = startFrame;
+ startFrame = endFrame;
+ endFrame = temp;
+ }
+
+ if( startFrame != mStartFrame || endFrame != mEndFrame )
+ {
+ ConditionalWait::ScopedLock lock( mConditionalWait );
+
+ mStartFrame = startFrame;
+ mEndFrame = endFrame;
+
+ // If the current frame is out of the range, change the current frame also.
+ if( mStartFrame > mCurrentFrame )
+ {
+ mCurrentFrame = mStartFrame;
+
+ mCurrentFrameUpdated = true;
+ mResourceReady = false;
+ }
+ else if( mEndFrame < mCurrentFrame )
+ {
+ mCurrentFrame = mEndFrame;
+
+ mCurrentFrameUpdated = true;
+ mResourceReady = false;
+ }
+
+ DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "VectorRasterizeThread::SetPlayRangeInFrame: [%d, %d]\n", mStartFrame, mEndFrame );
+ }
+ }