X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fanimated-vector-image%2Fanimated-vector-image-visual.cpp;h=ea4dee54f5db456aa543f934b1ab04bfcfe472ae;hp=16203e77cee8fce7a0273d27d99403975caa3497;hb=ecd29518008c9ac00b8b379d87dc6fecaddfff79;hpb=7e184105f63836152d054c939bd0cb73f8dcc07a diff --git a/dali-toolkit/internal/visuals/animated-vector-image/animated-vector-image-visual.cpp b/dali-toolkit/internal/visuals/animated-vector-image/animated-vector-image-visual.cpp index 16203e7..ea4dee5 100644 --- a/dali-toolkit/internal/visuals/animated-vector-image/animated-vector-image-visual.cpp +++ b/dali-toolkit/internal/visuals/animated-vector-image/animated-vector-image-visual.cpp @@ -21,6 +21,7 @@ // EXTERNAL INCLUDES #include #include +#include #include // INTERNAL INCLUDES @@ -309,21 +310,23 @@ void AnimatedVectorImageVisual::DoSetOnStage( Actor& actor ) mSizeNotification = actor.AddPropertyNotification( Actor::Property::SIZE, StepCondition( 3.0f ) ); mSizeNotification.NotifySignal().Connect( this, &AnimatedVectorImageVisual::OnSizeNotification ); - DevelActor::VisibilityChangedSignal( actor ).Connect( this, &AnimatedVectorImageVisual::OnVisibilityChanged ); + DevelActor::VisibilityChangedSignal( actor ).Connect( this, &AnimatedVectorImageVisual::OnControlVisibilityChanged ); + + Window window = DevelWindow::Get( actor ); + if( window ) + { + DevelWindow::VisibilityChangedSignal( window ).Connect( this, &AnimatedVectorImageVisual::OnWindowVisibilityChanged ); + } DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "AnimatedVectorImageVisual::DoSetOnStage [%p]\n", this ); } void AnimatedVectorImageVisual::DoSetOffStage( Actor& actor ) { - mVectorAnimationTask->PauseAnimation(); - - mActionStatus = DevelAnimatedVectorImageVisual::Action::PAUSE; + PauseAnimation(); if( mImpl->mRenderer ) { - mImpl->mRenderer.SetProperty( DevelRenderer::Property::RENDERING_BEHAVIOR, DevelRenderer::Rendering::IF_REQUIRED ); - actor.RemoveRenderer( mImpl->mRenderer ); mImpl->mRenderer.Reset(); @@ -334,7 +337,13 @@ void AnimatedVectorImageVisual::DoSetOffStage( Actor& actor ) actor.RemovePropertyNotification( mScaleNotification ); actor.RemovePropertyNotification( mSizeNotification ); - DevelActor::VisibilityChangedSignal( actor ).Connect( this, &AnimatedVectorImageVisual::OnVisibilityChanged ); + DevelActor::VisibilityChangedSignal( actor ).Disconnect( this, &AnimatedVectorImageVisual::OnControlVisibilityChanged ); + + Window window = DevelWindow::Get( actor ); + if( window ) + { + DevelWindow::VisibilityChangedSignal( window ).Disconnect( this, &AnimatedVectorImageVisual::OnWindowVisibilityChanged ); + } mPlacementActor.Reset(); @@ -542,6 +551,21 @@ void AnimatedVectorImageVisual::SetVectorImageSize() } } +void AnimatedVectorImageVisual::PauseAnimation() +{ + if( mActionStatus == DevelAnimatedVectorImageVisual::Action::PLAY ) + { + mVectorAnimationTask->PauseAnimation(); + + mActionStatus = DevelAnimatedVectorImageVisual::Action::PAUSE; + + if( mImpl->mRenderer ) + { + mImpl->mRenderer.SetProperty( DevelRenderer::Property::RENDERING_BEHAVIOR, DevelRenderer::Rendering::IF_REQUIRED ); + } + } +} + void AnimatedVectorImageVisual::OnScaleNotification( PropertyNotification& source ) { Actor actor = mPlacementActor.GetHandle(); @@ -572,23 +596,23 @@ void AnimatedVectorImageVisual::OnSizeNotification( PropertyNotification& source } } -void AnimatedVectorImageVisual::OnVisibilityChanged( Actor actor, bool visible, DevelActor::VisibilityChange::Type type ) +void AnimatedVectorImageVisual::OnControlVisibilityChanged( Actor actor, bool visible, DevelActor::VisibilityChange::Type type ) { if( !visible ) { - if( mActionStatus == DevelAnimatedVectorImageVisual::Action::PLAY ) - { - mVectorAnimationTask->PauseAnimation(); + PauseAnimation(); - if( mImpl->mRenderer ) - { - mImpl->mRenderer.SetProperty( DevelRenderer::Property::RENDERING_BEHAVIOR, DevelRenderer::Rendering::IF_REQUIRED ); - } + DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "AnimatedVectorImageVisual::OnControlVisibilityChanged: invisibile. Pause animation [%p]\n", this ); + } +} - mActionStatus = DevelAnimatedVectorImageVisual::Action::PAUSE; +void AnimatedVectorImageVisual::OnWindowVisibilityChanged( Window window, bool visible ) +{ + if( !visible ) + { + PauseAnimation(); - DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "AnimatedVectorImageVisual::OnVisibilityChanged: invisibile. Pause animation [%p]\n", this ); - } + DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "AnimatedVectorImageVisual::OnWindowVisibilityChanged: invisibile. Pause animation [%p]\n", this ); } }