From e47ae36b9102a61eb1ff71b45eb3231294e2ec46 Mon Sep 17 00:00:00 2001 From: Heeyong Song Date: Wed, 22 Jul 2020 14:24:54 +0900 Subject: [PATCH] [Tizen] (Vector) Fix event trigger issue Reset the pointer of the event callback Change-Id: I50467c7d9bae08e5dc3c062d21eccca226fd3f7e --- .../tizen-vector-animation-manager.cpp | 38 +++++++++++++++------- 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/dali-extension/vector-animation-renderer/tizen-vector-animation-manager.cpp b/dali-extension/vector-animation-renderer/tizen-vector-animation-manager.cpp index 97668c8..13deede 100755 --- a/dali-extension/vector-animation-renderer/tizen-vector-animation-manager.cpp +++ b/dali-extension/vector-animation-renderer/tizen-vector-animation-manager.cpp @@ -56,12 +56,16 @@ void TizenVectorAnimationManager::AddEventHandler( TizenVectorAnimationEventHand 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 ) ) ); + } + } } } @@ -71,16 +75,18 @@ void TizenVectorAnimationManager::RemoveEventHandler( TizenVectorAnimationEventH 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; } { @@ -91,6 +97,11 @@ void TizenVectorAnimationManager::RemoveEventHandler( TizenVectorAnimationEventH { mTriggeredHandlers.erase( triggeredHandler ); } + + if( releaseEventTrigger ) + { + mEventTrigger.reset(); + } } } @@ -102,7 +113,10 @@ void TizenVectorAnimationManager::TriggerEvent( TizenVectorAnimationEventHandler { mTriggeredHandlers.push_back( &handler ); - mEventTrigger->Trigger(); + if( mEventTrigger ) + { + mEventTrigger->Trigger(); + } } } -- 2.7.4