From 74c60b7887bfb2b624becac879db68dc8323249e Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Mon, 23 Dec 2019 17:39:21 +0900 Subject: [PATCH] Elm_Transit: Fix wrong intervention progress value Summary: If progress_value_set is called more than once, an error value occurs. The intervention progress must use progress that does not apply the previous intervention progress. Test Plan: meson_option.txt -> remove json in evas-loaders-disabler option elementary_test -to "animation view" Click Play -> Play back -> Play Reviewers: Hermet Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D10907 --- src/lib/elementary/elm_transit.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/elementary/elm_transit.c b/src/lib/elementary/elm_transit.c index 31c7961f50..39dc755604 100644 --- a/src/lib/elementary/elm_transit.c +++ b/src/lib/elementary/elm_transit.c @@ -61,6 +61,7 @@ struct _Elm_Transit } repeat; double progress; double inter_progress; + double base_progress; double revert_begin_progress; double revert_duration; double total_revert_time; @@ -359,6 +360,7 @@ _transit_animate_cb(void *data) } /* Intervention Progress */ + transit->base_progress = transit->progress; transit->progress += transit->inter_progress; switch (transit->tween_mode) @@ -956,7 +958,7 @@ elm_transit_progress_value_set(Elm_Transit *transit, double progress) if (progress < 0) progress = 0; else if (progress > 1) progress = 1; - transit->inter_progress = (progress - transit->progress); + transit->inter_progress = (progress - transit->base_progress); } EAPI double