Efl.Ui.Vg_Animation: Fix state when changed speed

Summary: If speed's direction changed, change state.

Test Plan: N/A

Reviewers: Hermet, kimcinoo, smohanty

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11021
This commit is contained in:
junsu choi 2020-01-07 15:52:06 +09:00 committed by Hermet Park
parent 0313104719
commit 5196484832
1 changed files with 15 additions and 4 deletions

View File

@ -780,11 +780,22 @@ _efl_ui_vg_animation_efl_player_playback_progress_set(Eo *obj EINA_UNUSED, Efl_U
EOLIAN static void
_efl_ui_vg_animation_efl_player_playback_speed_set(Eo *obj EINA_UNUSED, Efl_Ui_Vg_Animation_Data *pd, double speed)
{
Eina_Bool rewind = EINA_FALSE;
if ((pd->playback_speed > 0 && speed < 0) || (pd->playback_speed < 0 && speed > 0))
rewind = EINA_TRUE;
// pd->playback_direction_changed is used only during playback.
if ((pd->state == EFL_UI_VG_ANIMATION_STATE_PLAYING ||
pd->state == EFL_UI_VG_ANIMATION_STATE_PLAYING_BACKWARDS)
&& ((pd->playback_speed > 0 && speed < 0) || (pd->playback_speed < 0 && speed > 0)))
pd->playback_direction_changed = EINA_TRUE;
if (pd->state == EFL_UI_VG_ANIMATION_STATE_PLAYING && rewind)
{
pd->state = EFL_UI_VG_ANIMATION_STATE_PLAYING_BACKWARDS;
pd->playback_direction_changed = EINA_TRUE;
}
else if (pd->state == EFL_UI_VG_ANIMATION_STATE_PLAYING_BACKWARDS && rewind)
{
pd->state = EFL_UI_VG_ANIMATION_STATE_PLAYING;
pd->playback_direction_changed = EINA_TRUE;
}
pd->playback_speed = speed;
speed = speed < 0 ? speed * -1 : speed;