Check renderer when call DisplayNextFrame() 19/249319/5
authorSunghyun Kim <scholb.kim@samsung.com>
Thu, 10 Dec 2020 05:55:06 +0000 (14:55 +0900)
committersunghyun kim <scholb.kim@samsung.com>
Thu, 17 Dec 2020 08:58:30 +0000 (08:58 +0000)
Sometimes DisplayNextFrame() is called even if animatedImageVisual is
disposed.
for avoid this issue, i added this patch.

Change-Id: I4912dbc38e2c911bc7bbfe7815a8fc8f6b9f4d37

dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp

index cb900a4..5a83d92 100755 (executable)
@@ -510,6 +510,7 @@ void AnimatedImageVisual::DoSetOffScene( Actor& actor )
   actor.RemoveRenderer( mImpl->mRenderer );
   mImpl->mRenderer.Reset();
   mPlacementActor.Reset();
+  mStartFirstFrame = false;
 }
 
 void AnimatedImageVisual::OnSetTransform()
@@ -608,12 +609,13 @@ void AnimatedImageVisual::StartFirstFrame( TextureSet& textureSet )
   if(mImpl->mRenderer)
   {
     mImpl->mRenderer.SetTextures( textureSet );
-  }
-  Actor actor = mPlacementActor.GetHandle();
-  if( actor )
-  {
-    actor.AddRenderer( mImpl->mRenderer );
-    mPlacementActor.Reset();
+
+    Actor actor = mPlacementActor.GetHandle();
+    if( actor )
+    {
+      actor.AddRenderer( mImpl->mRenderer );
+      mPlacementActor.Reset();
+    }
   }
 
   if( mFrameCount > 1 )
@@ -764,7 +766,10 @@ bool AnimatedImageVisual::DisplayNextFrame()
     if( textureSet )
     {
       SetImageSize( textureSet );
-      mImpl->mRenderer.SetTextures( textureSet );
+      if( mImpl->mRenderer )
+      {
+        mImpl->mRenderer.SetTextures( textureSet );
+      }
     }
 
     continueTimer = ( mActionStatus == DevelAnimatedImageVisual::Action::PLAY ) ? true : false;