From: tscholb Date: Tue, 15 Feb 2022 08:13:16 +0000 (+0900) Subject: [Tizen] Fix the gif issue when ImageView uses SynchronosLoading X-Git-Tag: accepted/tizen/6.5/unified/20220323.134113^2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=88ed30632604ed2c9476fe0a3adc99ad82a25472;ds=sidebyside [Tizen] Fix the gif issue when ImageView uses SynchronosLoading when ImageView with gif used synchronosLoading, its animation stopped. it is because image cache can't get probably imageCount. so i fix them. Change-Id: I56a54562ad99e40ca27e7cc47b0eee924414998f --- diff --git a/dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp b/dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp index bfa0118..44f0a41 100644 --- a/dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp +++ b/dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp @@ -854,6 +854,7 @@ void AnimatedImageVisual::OnInitialize() void AnimatedImageVisual::StartFirstFrame(TextureSet& textureSet, uint32_t firstInterval) { DALI_LOG_INFO(gAnimImgLogFilter, Debug::Concise, "AnimatedImageVisual::StartFirstFrame()\n"); + mFrameCount = mImageCache->GetTotalFrameCount(); mStartFirstFrame = false; if(mImpl->mRenderer) @@ -897,7 +898,6 @@ TextureSet AnimatedImageVisual::PrepareTextureSet() { SetImageSize(textureSet); } - return textureSet; } @@ -941,7 +941,6 @@ void AnimatedImageVisual::FrameReady(TextureSet textureSet, uint32_t interval) if(mStartFirstFrame) { - mFrameCount = mImageCache->GetTotalFrameCount(); StartFirstFrame(textureSet, interval); } else diff --git a/dali-toolkit/internal/visuals/animated-image/rolling-animated-image-cache.cpp b/dali-toolkit/internal/visuals/animated-image/rolling-animated-image-cache.cpp index 5bee46c..263cf8d 100644 --- a/dali-toolkit/internal/visuals/animated-image/rolling-animated-image-cache.cpp +++ b/dali-toolkit/internal/visuals/animated-image/rolling-animated-image-cache.cpp @@ -140,7 +140,6 @@ TextureSet RollingAnimatedImageCache::Frame(uint32_t frameIndex) textureSet = GetFrontTextureSet(); } } - return textureSet; } @@ -220,6 +219,18 @@ TextureSet RollingAnimatedImageCache::RequestFrameLoading(uint32_t frameIndex, b { // Synchronous loading is failed mLoadState = TextureManager::LoadState::LOAD_FAILED; + return textureSet; + } + + if(synchronousLoading) + { + if(DALI_UNLIKELY(mFrameCount != mAnimatedImageLoading.GetImageCount())) + { + mFrameCount = mAnimatedImageLoading.GetImageCount(); + mImageUrls.resize(mFrameCount); + mIntervals.assign(mFrameCount, 0); + } + mIntervals[mQueue.Back().mFrameNumber] = mAnimatedImageLoading.GetFrameInterval(frameIndex); } return textureSet;