X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fanimated-image%2Fanimated-image-visual.cpp;h=f9772ec4d2cb6fe6255da1920411f2ee5a90e16b;hb=01cb9df751fea0c261ded593c3e6603c522006a3;hp=19cd013b4c33296f21999d0eadee028c90e8429c;hpb=582dcffd1a19c7ca9b28ee7e73e990ab0fe9ea59;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git 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 19cd013..f9772ec 100755 --- a/dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp +++ b/dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp @@ -689,69 +689,71 @@ void AnimatedImageVisual::FrameReady( TextureSet textureSet ) bool AnimatedImageVisual::DisplayNextFrame() { - bool nextFrame = false; - uint32_t frameIndex = mImageCache->GetCurrentFrameIndex(); + bool continueTimer = false; - if( mIsJumpTo ) + if(mImageCache) { - mIsJumpTo = false; - frameIndex = mFrameIndexForJumpTo; - } - else if( mActionStatus == DevelAnimatedImageVisual::Action::PAUSE ) - { - return false; - } - else if( mActionStatus == DevelAnimatedImageVisual::Action::STOP ) - { - frameIndex = 0; - if( mStopBehavior == DevelImageVisual::StopBehavior::FIRST_FRAME ) + bool nextFrame = false; + uint32_t frameIndex = mImageCache->GetCurrentFrameIndex(); + + if( mIsJumpTo ) { - frameIndex = 0; + mIsJumpTo = false; + frameIndex = mFrameIndexForJumpTo; } - else if( mStopBehavior == DevelImageVisual::StopBehavior::LAST_FRAME ) + else if( mActionStatus == DevelAnimatedImageVisual::Action::PAUSE ) { - frameIndex = mFrameCount - 1; + return false; } - else + else if( mActionStatus == DevelAnimatedImageVisual::Action::STOP ) { - return false; // Do not draw already rendered scene twice. - } - } - else - { - if( mFrameCount > 1 ) - { - nextFrame = true; - frameIndex++; - if( frameIndex >= mFrameCount ) + frameIndex = 0; + if( mStopBehavior == DevelImageVisual::StopBehavior::FIRST_FRAME ) { - frameIndex %= mFrameCount; - ++mCurrentLoopIndex; + frameIndex = 0; } - - if(mLoopCount >= 0 && mCurrentLoopIndex >= mLoopCount) + else if( mStopBehavior == DevelImageVisual::StopBehavior::LAST_FRAME ) + { + frameIndex = mFrameCount - 1; + } + else { - // This will stop timer - mActionStatus = DevelAnimatedImageVisual::Action::STOP; - return DisplayNextFrame(); + return false; // Do not draw already rendered scene twice. } } - // TODO : newly added one. - if( mAnimatedImageLoading && mImageCache ) + else { + if( mFrameCount > 1 ) + { + nextFrame = true; + frameIndex++; + if( frameIndex >= mFrameCount ) + { + frameIndex %= mFrameCount; + ++mCurrentLoopIndex; + } + + if(mLoopCount >= 0 && mCurrentLoopIndex >= mLoopCount) + { + // This will stop timer + mActionStatus = DevelAnimatedImageVisual::Action::STOP; + return DisplayNextFrame(); + } + } + unsigned int delay = mImageCache->GetFrameInterval( frameIndex ); - if( mFrameDelayTimer.GetInterval() != delay ) + if( delay > 0u ) { - mFrameDelayTimer.SetInterval( delay ); + if( mFrameDelayTimer.GetInterval() != delay ) + { + mFrameDelayTimer.SetInterval( delay ); + } } } - } - DALI_LOG_INFO( gAnimImgLogFilter,Debug::Concise,"AnimatedImageVisual::DisplayNextFrame(this:%p) CurrentFrameIndex:%d\n", this, frameIndex); + DALI_LOG_INFO( gAnimImgLogFilter,Debug::Concise,"AnimatedImageVisual::DisplayNextFrame(this:%p) CurrentFrameIndex:%d\n", this, frameIndex); - TextureSet textureSet; - if( mImageCache ) - { + TextureSet textureSet; if(nextFrame) { textureSet = mImageCache->NextFrame(); @@ -769,9 +771,11 @@ bool AnimatedImageVisual::DisplayNextFrame() mImpl->mRenderer.SetTextures( textureSet ); } } + + continueTimer = ( mActionStatus == DevelAnimatedImageVisual::Action::PLAY ) ? true : false; } - return ( mActionStatus == DevelAnimatedImageVisual::Action::PLAY ) ? true : false; + return continueTimer; }