fix(anim_timeline): run animations which do not have an exec cb (#7043)

This commit is contained in:
Toni Neubert
2024-10-12 06:15:08 +02:00
committed by GitHub
parent 9d4c26dd73
commit da58f2c48e
2 changed files with 39 additions and 4 deletions

View File

@@ -206,10 +206,6 @@ static void anim_timeline_set_act_time(lv_anim_timeline_t * at, uint32_t act_tim
lv_anim_timeline_dsc_t * anim_dsc = &(at->anim_dsc[i]);
lv_anim_t * a = &(anim_dsc->anim);
if(a->exec_cb == NULL && a->custom_exec_cb == NULL) {
continue;
}
uint32_t start_time = anim_dsc->start_time;
int32_t value = 0;

View File

@@ -568,4 +568,43 @@ void test_anim_timeline_with_anim_start_cb_and_completed_cb(void)
TEST_ASSERT_EQUAL(1, anim2_completed_called);
}
void test_anim_timeline_without_exec_cb_but_anim_start_cb_and_completed_cb(void)
{
lv_anim_t anim1;
lv_anim_init(&anim1);
lv_anim_set_values(&anim1, 0, 1024);
lv_anim_set_duration(&anim1, 300);
lv_anim_set_exec_cb(&anim1, anim1_exec_cb);
lv_anim_set_start_cb(&anim1, anim1_start);
lv_anim_set_completed_cb(&anim1, anim1_completed);
anim1_start_called = 0;
anim1_completed_called = 0;
anim_timeline = lv_anim_timeline_create();
lv_anim_timeline_add(anim_timeline, 200, &anim1);
lv_anim_timeline_set_progress(anim_timeline, 0);
lv_anim_timeline_start(anim_timeline);
lv_refr_now(NULL);
/*
* |----anim1----|
*
* 0 200 300 500
*/
lv_test_wait(20); /*Wait 20 ms*/
TEST_ASSERT_EQUAL(0, anim1_start_called);
TEST_ASSERT_EQUAL(0, anim1_completed_called);
lv_test_wait(200); /*Now we are at 220ms */
TEST_ASSERT_EQUAL(1, anim1_start_called);
TEST_ASSERT_EQUAL(0, anim1_completed_called);
lv_test_wait(300); /*Now we are at 520ms */
TEST_ASSERT_EQUAL(1, anim1_start_called);
TEST_ASSERT_EQUAL(1, anim1_completed_called);
}
#endif