VectorAnimationManager::VectorAnimationManager()
: mEventCallbacks(),
+ mLifecycleObservers(),
mVectorAnimationThread( nullptr ),
mProcessorRegistered( false )
{
{
Adaptor::Get().UnregisterProcessor( *this );
}
+
+ for( auto observer : mLifecycleObservers )
+ {
+ observer->VectorAnimationManagerDestroyed();
+ }
+}
+
+void VectorAnimationManager::AddObserver( VectorAnimationManager::LifecycleObserver& observer )
+{
+ DALI_ASSERT_DEBUG( mLifecycleObservers.end() == std::find( mLifecycleObservers.begin(), mLifecycleObservers.end(), &observer));
+ mLifecycleObservers.push_back( &observer );
+}
+
+void VectorAnimationManager::RemoveObserver( VectorAnimationManager::LifecycleObserver& observer)
+{
+ auto iterator=std::find(mLifecycleObservers.begin(), mLifecycleObservers.end(), &observer);
+ if( iterator != mLifecycleObservers.end() )
+ {
+ mLifecycleObservers.erase(iterator);
+ }
}
VectorAnimationThread& VectorAnimationManager::GetVectorAnimationThread()
{
mEventCallbacks.erase( iter );
+ // Delete callback base memory
+ delete callback;
+
if( mEventCallbacks.empty() )
{
if( Adaptor::IsAvailable() )