Set default size when vector visual is initialized 29/205129/2
authorHeeyong Song <heeyong.song@samsung.com>
Mon, 29 Apr 2019 09:32:01 +0000 (18:32 +0900)
committerHeeyong Song <heeyong.song@samsung.com>
Tue, 7 May 2019 05:00:07 +0000 (05:00 +0000)
- OnSetTransform() is not called before rendering
when a vector file is replaced.

Change-Id: I493bf87fd63ecfd9e13292e3cfafa03c442aaf54

dali-toolkit/internal/visuals/animated-vector-image/animated-vector-image-visual.cpp
dali-toolkit/internal/visuals/animated-vector-image/vector-rasterize-thread.cpp

index e693fd1..c4e2df0 100644 (file)
@@ -56,6 +56,10 @@ enum Flags
   RESEND_LOOP_COUNT  = 1 << 1
 };
 
+#if defined(DEBUG_ENABLED)
+Debug::Filter* gVectorAnimationLogFilter = Debug::Filter::New( Debug::NoLogging, false, "LOG_VECTOR_ANIMATION" );
+#endif
+
 } // unnamed namespace
 
 AnimatedVectorImageVisualPtr AnimatedVectorImageVisual::New( VisualFactoryCache& factoryCache, ImageVisualShaderFactory& shaderFactory, const VisualUrl& imageUrl, const Property::Map& properties )
@@ -252,6 +256,8 @@ void AnimatedVectorImageVisual::OnSetTransform()
 
   if( IsOnStage() )
   {
+    DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "AnimatedVectorImageVisual::OnSetTransform: width = %f, height = %f\n", visualSize.width, visualSize.height );
+
     if( visualSize != mVisualSize )
     {
       mVisualSize = visualSize;
@@ -336,7 +342,7 @@ void AnimatedVectorImageVisual::OnDoAction( const Property::Index actionId, cons
       {
         mVectorRasterizeThread.SetCurrentProgress( progress );
 
-        if( mVectorRasterizeThread.GetPlayState() != DevelImageVisual::PlayState::PLAYING )
+        if( IsOnStage() && mVectorRasterizeThread.GetPlayState() != DevelImageVisual::PlayState::PLAYING )
         {
           mVectorRasterizeThread.RenderFrame();
           Stage::GetCurrent().KeepRendering( 0.0f );    // Trigger rendering
@@ -408,14 +414,17 @@ void AnimatedVectorImageVisual::SendAnimationData()
       mVectorRasterizeThread.SetPlayRange( mPlayRange );
     }
 
-    if( isPlaying )
-    {
-      mVectorRasterizeThread.PlayAnimation();
-    }
-    else
+    if( IsOnStage() )
     {
-      mVectorRasterizeThread.RenderFrame();
-      Stage::GetCurrent().KeepRendering( 0.0f );
+      if( isPlaying )
+      {
+        mVectorRasterizeThread.PlayAnimation();
+      }
+      else
+      {
+        mVectorRasterizeThread.RenderFrame();
+        Stage::GetCurrent().KeepRendering( 0.0f );
+      }
     }
 
     mResendFlag = 0;
index 42ffe5a..ab3dbb1 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 );
 }
 
@@ -392,7 +404,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 );