Adaptor::Get().RegisterProcessor( *this );
}
- if( !mEventTrigger )
+ mEventHandlers.push_back( &handler );
+
{
- mEventTrigger = std::unique_ptr< EventThreadCallback >( new EventThreadCallback( MakeCallback( this, &TizenVectorAnimationManager::OnEventTriggered ) ) );
- }
+ Dali::Mutex::ScopedLock lock( mMutex );
- mEventHandlers.push_back( &handler );
+ if( !mEventTrigger )
+ {
+ mEventTrigger = std::unique_ptr< EventThreadCallback >( new EventThreadCallback( MakeCallback( this, &TizenVectorAnimationManager::OnEventTriggered ) ) );
+ }
+ }
}
}
if( iter != mEventHandlers.end() )
{
mEventHandlers.erase( iter );
+ }
- if( mEventHandlers.empty() )
- {
- if( Adaptor::IsAvailable() )
- {
- Adaptor::Get().UnregisterProcessor( *this );
- }
+ bool releaseEventTrigger = false;
- mEventTrigger.release();
+ if( mEventHandlers.empty() )
+ {
+ if( Adaptor::IsAvailable() )
+ {
+ Adaptor::Get().UnregisterProcessor( *this );
}
+
+ releaseEventTrigger = true;
}
{
{
mTriggeredHandlers.erase( triggeredHandler );
}
+
+ if( releaseEventTrigger )
+ {
+ mEventTrigger.reset();
+ }
}
}
{
mTriggeredHandlers.push_back( &handler );
- mEventTrigger->Trigger();
+ if( mEventTrigger )
+ {
+ mEventTrigger->Trigger();
+ }
}
}