[Tizen] Fix Animation with EndAction::DISCARD dont reset properties. 39/312239/2
authorEunki, Hong <eunkiki.hong@samsung.com>
Tue, 4 Jun 2024 12:38:38 +0000 (21:38 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Mon, 10 Jun 2024 06:36:11 +0000 (15:36 +0900)
commit05be3c4a93d6da36596a99ff04c3ef0ed072362a
treea291428e5ad1d9634fdcdf5aa8d81c9ed03db405
parent02d1c00b6f532d4b8081cd21689b9ebd348f4d5d
[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