Fix to do not remove entity inside loop.(Transition) 07/261107/2
authorseungho <sbsh.baek@samsung.com>
Mon, 12 Jul 2021 05:16:58 +0000 (14:16 +0900)
committerseungho <sbsh.baek@samsung.com>
Mon, 12 Jul 2021 05:26:02 +0000 (14:26 +0900)
 - Fix a problem caused by removing entity inside loop

Change-Id: Id12c66ec287c451451005c3c2d0d33b570d4c984
Signed-off-by: seungho <sbsh.baek@samsung.com>
dali-toolkit/internal/transition/transition-base-impl.cpp

index 241eb06..ca34d77 100644 (file)
@@ -219,10 +219,11 @@ void TransitionBase::CopyTarget()
 {
   mCopiedActor = Dali::Actor::New();
   mTarget.GetParent().Add(mCopiedActor);
 {
   mCopiedActor = Dali::Actor::New();
   mTarget.GetParent().Add(mCopiedActor);
+
   mCopiedActor[Dali::DevelActor::Property::SIBLING_ORDER] = static_cast<int32_t>(mTarget[Dali::DevelActor::Property::SIBLING_ORDER]) + 1;
   mCopiedActor[Dali::DevelActor::Property::SIBLING_ORDER] = static_cast<int32_t>(mTarget[Dali::DevelActor::Property::SIBLING_ORDER]) + 1;
-  for(uint32_t i = 0; i < mTarget.GetChildCount(); ++i)
+  while(mTarget.GetChildCount() > 0)
   {
   {
-    Dali::Actor child = mTarget.GetChildAt(i);
+    Dali::Actor child = mTarget.GetChildAt(0);
     Dali::DevelActor::SwitchParent(child, mCopiedActor);
   }
 
     Dali::DevelActor::SwitchParent(child, mCopiedActor);
   }
 
@@ -238,9 +239,9 @@ void TransitionBase::TransitionFinished()
   mTarget.SetProperties(mOriginalPropertyMap);
   if(mMoveTargetChildren)
   {
   mTarget.SetProperties(mOriginalPropertyMap);
   if(mMoveTargetChildren)
   {
-    for(uint32_t i = 0; i < mCopiedActor.GetChildCount(); ++i)
+    while(mCopiedActor.GetChildCount() > 0)
     {
     {
-      Dali::Actor child = mCopiedActor.GetChildAt(i);
+      Dali::Actor child = mCopiedActor.GetChildAt(0);
       Dali::DevelActor::SwitchParent(child, mTarget);
     }
     mCopiedActor.Unparent();
       Dali::DevelActor::SwitchParent(child, mTarget);
     }
     mCopiedActor.Unparent();