- DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "VectorRasterizeThread::Rasterize: [%d]\n", mCurrentFrame );
+ bool resourceReady;
+ uint32_t currentFrame, startFrame, endFrame;
+ int32_t loopCount;
+ DevelImageVisual::PlayState playState;
+
+ {
+ ConditionalWait::ScopedLock lock( mConditionalWait );
+
+ if( mPlayState != DevelImageVisual::PlayState::PLAYING && !mNeedRender && !mDestroyThread )
+ {
+ DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "VectorRasterizeThread::Rasterize: Wait\n" );
+
+ if( mPlayState == DevelImageVisual::PlayState::STOPPED )
+ {
+ // Reset the current loop
+ mCurrentLoop = 0;
+ }
+ mConditionalWait.Wait( lock );
+ }
+
+ resourceReady = mResourceReady;
+ currentFrame = mCurrentFrame++;
+ startFrame = mStartFrame;
+ endFrame = mEndFrame;
+ loopCount = mLoopCount;
+ playState = mPlayState;
+
+ mNeedRender = false;
+ mResourceReady = true;
+ mCurrentFrameUpdated = false;
+ }
+
+ auto currentFrameStartTime = std::chrono::system_clock::now();