X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Fanimation%2Fscene-graph-animation.cpp;h=22483bf74103ba64dfc4a9376fe43eae31639aa4;hb=e64c3989f06c5968cbc48ace0f691d8978f83c5b;hp=709d7e73001be0be826aabef80fd75b11c2b1b6c;hpb=959b21cb9dd930eaddd4942f66753751b38aea82;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/update/animation/scene-graph-animation.cpp b/dali/internal/update/animation/scene-graph-animation.cpp index 709d7e7..22483bf 100644 --- a/dali/internal/update/animation/scene-graph-animation.cpp +++ b/dali/internal/update/animation/scene-graph-animation.cpp @@ -316,20 +316,36 @@ void Animation::Update(BufferIndex bufferIndex, float elapsedSeconds, bool& loop if (mState == Playing) { // If there is delay time before Animation starts, wait the Animation until mDelaySeconds. - if( mDelaySeconds > 0) + if( mDelaySeconds > 0.0f ) { - mDelaySeconds = mDelaySeconds - ( elapsedSeconds * mSpeedFactor ); + float reduceSeconds = fabsf( elapsedSeconds * mSpeedFactor ); + if( reduceSeconds > mDelaySeconds ) + { + if( mSpeedFactor < 0.0f ) + { + mElapsedSeconds -= reduceSeconds - mDelaySeconds; + } + else + { + mElapsedSeconds += reduceSeconds - mDelaySeconds; + } + mDelaySeconds = 0.0f; + } + else + { + mDelaySeconds -= reduceSeconds; + } } else { - mElapsedSeconds += elapsedSeconds * mSpeedFactor; + mElapsedSeconds += ( elapsedSeconds * mSpeedFactor ); + } - if ( mProgressReachedSignalRequired && ( mElapsedSeconds >= mProgressMarker ) ) - { - // The application should be notified by NotificationManager, in another thread - progressReached = true; - mProgressReachedSignalRequired = false; - } + if ( mProgressReachedSignalRequired && ( mElapsedSeconds >= mProgressMarker ) ) + { + // The application should be notified by NotificationManager, in another thread + progressReached = true; + mProgressReachedSignalRequired = false; } }