(Vector) Reset the current frame when stopped
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / visuals / animated-vector-image / vector-rasterize-thread.cpp
index 42ffe5a..543ca0d 100644 (file)
@@ -109,6 +109,8 @@ void VectorRasterizeThread::Run()
   {
     Rasterize();
   }
+
+  DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "VectorRasterizeThread::Run: End of thread\n" );
 }
 
 void VectorRasterizeThread::SetRenderer( Renderer renderer )
@@ -139,6 +141,7 @@ void VectorRasterizeThread::SetSize( uint32_t width, uint32_t height )
 void VectorRasterizeThread::PlayAnimation()
 {
   ConditionalWait::ScopedLock lock( mConditionalWait );
+
   if( mPlayState != DevelImageVisual::PlayState::PLAYING )
   {
     mPlayState = DevelImageVisual::PlayState::PLAYING;
@@ -205,6 +208,8 @@ void VectorRasterizeThread::SetLoopCount( int32_t count )
     ConditionalWait::ScopedLock lock( mConditionalWait );
 
     mLoopCount = count;
+
+    DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "VectorRasterizeThread::SetLoopCount: [%d]\n", count );
   }
 }
 
@@ -249,6 +254,8 @@ void VectorRasterizeThread::SetPlayRange( Vector2 range )
         mCurrentFrameUpdated = true;
         mResourceReady = false;
       }
+
+      DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "VectorRasterizeThread::SetPlayRange: [%d, %d]\n", mStartFrame, mEndFrame );
     }
   }
 }
@@ -309,6 +316,11 @@ void VectorRasterizeThread::Initialize()
   mFrameRate = mVectorRenderer.GetFrameRate();
   mFrameDurationNanoSeconds = NANOSECONDS_PER_SECOND / mFrameRate;
 
+  uint32_t width, height;
+  mVectorRenderer.GetDefaultSize( width, height );
+
+  SetSize( width, height );
+
   DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "VectorRasterizeThread::Initialize: file = %s [%d frames, %f fps]\n", mUrl.c_str(), mTotalFrame, mFrameRate );
 }
 
@@ -367,6 +379,8 @@ void VectorRasterizeThread::Rasterize()
         {
           mPlayState = DevelImageVisual::PlayState::STOPPED;
 
+          ResetToStart( mCurrentFrameUpdated, mCurrentFrame, startFrame, mConditionalWait );
+
           // Animation is finished
           mAnimationFinishedTrigger->Trigger();
 
@@ -392,7 +406,7 @@ void VectorRasterizeThread::Rasterize()
 #if defined(DEBUG_ENABLED)
   auto sleepDuration = std::chrono::duration_cast< std::chrono::milliseconds >( timeToSleepUntil - std::chrono::system_clock::now() );
 
-  DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "VectorRasterizeThread::Rasterize: [current = %d, sleep duration = %lld]\n", mCurrentFrame, sleepDuration.count() );
+  DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "VectorRasterizeThread::Rasterize: [current = %d, sleep duration = %lld]\n", currentFrame, sleepDuration.count() );
 #endif
 
   std::this_thread::sleep_until( timeToSleepUntil );