X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-core.git;a=blobdiff_plain;f=dali%2Finternal%2Fevent%2Fanimation%2Fanimation-impl.cpp;h=c27f31b3740b3aae0db2b0f82bc2a92c21da96ce;hp=0d70028124dfde160caa0e93a01a4342c6c756a4;hb=641ea9391fdfc25a6836ffaa86b5c74e2a1f425c;hpb=79b6ed9fa711973b3245ad776b747bb049b491ed diff --git a/dali/internal/event/animation/animation-impl.cpp b/dali/internal/event/animation/animation-impl.cpp index 0d70028..c27f31b 100644 --- a/dali/internal/event/animation/animation-impl.cpp +++ b/dali/internal/event/animation/animation-impl.cpp @@ -112,18 +112,17 @@ AnimationPtr Animation::New(float durationSeconds) } Animation::Animation( EventThreadServices& eventThreadServices, AnimationPlaylist& playlist, float durationSeconds, EndAction endAction, EndAction disconnectAction, AlphaFunction defaultAlpha ) -: mAnimation( NULL ), - mEventThreadServices( eventThreadServices ), +: mEventThreadServices( eventThreadServices ), mPlaylist( playlist ), - mFinishedSignal(), - mConnectors(), - mConnectorTargetValues(), - mPlayRange( Vector2(0.0f,1.0f)), + mAnimation( NULL ), + mNotificationCount( 0 ), + mFinishedCallback( NULL ), + mFinishedCallbackObject( NULL ), mDurationSeconds( durationSeconds ), mSpeedFactor(1.0f), - mNotificationCount( 0 ), mLoopCount(1), mCurrentLoop(0), + mPlayRange( Vector2(0.0f,1.0f)), mEndAction( endAction ), mDisconnectAction( disconnectAction ), mDefaultAlpha( defaultAlpha ), @@ -783,6 +782,12 @@ void Animation::EmitSignalFinish() Dali::Animation handle( this ); mFinishedSignal.Emit( handle ); } + + // This callback is used internally, to avoid the overhead of using a signal. + if ( mFinishedCallback ) + { + mFinishedCallback( mFinishedCallbackObject ); + } } bool Animation::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor ) @@ -803,6 +808,12 @@ bool Animation::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* return connected; } +void Animation::SetFinishedCallback( FinishedCallback callback, Object* object ) +{ + mFinishedCallback = callback; + mFinishedCallbackObject = object; +} + void Animation::AddAnimatorConnector( AnimatorConnectorBase* connector ) { DALI_ASSERT_DEBUG( NULL != connector );