[Tizen] Fix Animation with EndAction::DISCARD dont reset properties. 31/312531/1
authorEunki, Hong <eunkiki.hong@samsung.com>
Tue, 4 Jun 2024 12:38:38 +0000 (21:38 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Tue, 11 Jun 2024 08:01:16 +0000 (17:01 +0900)
commit996004bad5ddd1e4454a8066e7286a6b8f25a7a9
tree341d1cf31255147602deb9e30a9ef09476910f0c
parent41f3d5f5f98ba14d05623ca27aa90af06cee3356
[Tizen] Fix Animation with EndAction::DISCARD dont reset properties.

If Animation::EndAction::DISCARD finisehd normally cases,
The mDirtyFlag was not matched with real world

For example

ResetToBaseValue[0](mDirtyFlag become 1)
Animate and finished (mValue[0] changed.)
(update)
ResetToBaseValue[1](mDirtyFlag become 0)
(update)
(ResetToBaseValue did not called. So mValue[0] is last frame value)
(update)
(ResetToBaseValue did not called. So mValue[1] is BaseValue)

Now, mValue become flickering.

To avoid this problem, let we call ResetToBaseValue at least 2 frames
if finished animation's EndAction is DISCARD.
(Note that we don't consider Stop() call cases, since Stop() will not Animate
Animator, so mValue[0] is BaseValue)

And also, There was some issue that visual renderer property changeness not updated to
the dirty rect infomation.
(Since SG::Renderer don't be mark as updated)

To fix this issue, let we ensure to check the visual renderer property dirty.

And also, for apply Animation::EndAction::DISCARD case,
Let we make visual renderer coefficient use double buffered flags,
and age down every frames.

TODO : UpdateManager need to ResetBaseValue at least 2 frames
if Finished animation is EndAction::DISCARD.

This will need update manager side fix. So just keep this bug and fix as another patch.

Change-Id: Ibf654f723e1f986843cda620bc741b1121ee95d7
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
automated-tests/src/dali/utc-Dali-Animation.cpp
automated-tests/src/dali/utc-Dali-VisualRenderer.cpp
dali/internal/update/common/animatable-property.h
dali/internal/update/common/renderer-resetter.h
dali/internal/update/manager/update-manager.cpp
dali/internal/update/rendering/scene-graph-renderer.cpp
dali/internal/update/rendering/scene-graph-renderer.h
dali/internal/update/rendering/scene-graph-visual-renderer-property.h
dali/internal/update/rendering/scene-graph-visual-renderer.cpp
dali/internal/update/rendering/scene-graph-visual-renderer.h