From d68a6075c205713640ae01d589d71e7c28275fb2 Mon Sep 17 00:00:00 2001 From: Heeyong Song Date: Mon, 29 Apr 2019 18:32:01 +0900 Subject: [PATCH] Set default size when vector visual is initialized - OnSetTransform() is not called before rendering when a vector file is replaced. Change-Id: I493bf87fd63ecfd9e13292e3cfafa03c442aaf54 --- .../animated-vector-image-visual.cpp | 25 +++++++++++++++------- .../vector-rasterize-thread.cpp | 14 +++++++++++- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/dali-toolkit/internal/visuals/animated-vector-image/animated-vector-image-visual.cpp b/dali-toolkit/internal/visuals/animated-vector-image/animated-vector-image-visual.cpp index e693fd1..c4e2df0 100644 --- a/dali-toolkit/internal/visuals/animated-vector-image/animated-vector-image-visual.cpp +++ b/dali-toolkit/internal/visuals/animated-vector-image/animated-vector-image-visual.cpp @@ -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; diff --git a/dali-toolkit/internal/visuals/animated-vector-image/vector-rasterize-thread.cpp b/dali-toolkit/internal/visuals/animated-vector-image/vector-rasterize-thread.cpp index 42ffe5a..ab3dbb1 100644 --- a/dali-toolkit/internal/visuals/animated-vector-image/vector-rasterize-thread.cpp +++ b/dali-toolkit/internal/visuals/animated-vector-image/vector-rasterize-thread.cpp @@ -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 ); -- 2.7.4