Ignore AnimationFinishedCallback when we call Animation::Clear() hard + Resolve bug... 25/311925/3
authorEunki, Hong <eunkiki.hong@samsung.com>
Thu, 30 May 2024 11:18:50 +0000 (20:18 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Thu, 30 May 2024 13:37:16 +0000 (22:37 +0900)
commit2200ff9e942eaf22ba58d08fe1a53ef71046d18f
tree61e0ac2e12e2fb5a1d0743e360941b703e8b9428
parent17d43c48af7cbcd6c619514c6eabd176b5558dc4
Ignore AnimationFinishedCallback when we call Animation::Clear() hard + Resolve bug when we call Play multiple times

There was several bugs at AnimationPlayList.

1. Core::ProcessCoreEvents sequence is like this :
     SceneEvent -> NotificationManager -> Relayout -> Flush.
   If we call Animation::Clear() at SceneEvent timing, Notfication will send animation finished signal
   what we must not send.

   To avoid this system, let we store the cleared animations at AnimationPlayList.

   Since AnimationFinished callback required at least 1 frame times after flush,
   we can ignore whole notify events before Flush done.

2. Scene mPlayList keep the reference of Animation whenever we call Play, there
   were several problems. For example, If we call Play() 2 times and Clear(),
   that Dali::Animation never be removed.

Change-Id: Ie9d5298311b9e5318fecad21b1124c896fcf3a8e
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
automated-tests/src/dali/utc-Dali-Animation.cpp
dali/internal/common/core-impl.cpp
dali/internal/event/animation/animation-impl.cpp
dali/internal/event/animation/animation-playlist.cpp
dali/internal/event/animation/animation-playlist.h