Skip to content

Commit 4f6c895

Browse files
authored
fix(lv_disp): fix lv_scr_load_anim being called twice quickly (lvgl#4487)
1 parent c069f98 commit 4f6c895

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

src/disp/lv_disp.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -507,9 +507,13 @@ void lv_scr_load_anim(lv_obj_t * new_scr, lv_scr_load_anim_t anim_type, uint32_t
507507
lv_disp_t * d = lv_obj_get_disp(new_scr);
508508
lv_obj_t * act_scr = lv_scr_act();
509509

510+
if(act_scr == new_scr || d->scr_to_load == new_scr) {
511+
return;
512+
}
513+
510514
/*If another screen load animation is in progress
511515
*make target screen loaded immediately. */
512-
if(d->scr_to_load && act_scr != d->scr_to_load) {
516+
if(d->scr_to_load) {
513517
scr_load_internal(d->scr_to_load);
514518
lv_anim_del(d->scr_to_load, NULL);
515519
lv_obj_set_pos(d->scr_to_load, 0, 0);
@@ -546,6 +550,7 @@ void lv_scr_load_anim(lv_obj_t * new_scr, lv_scr_load_anim_t anim_type, uint32_t
546550
if(time == 0 && delay == 0) {
547551

548552
scr_load_internal(new_scr);
553+
d->scr_to_load = NULL;
549554
if(auto_del) lv_obj_del(act_scr);
550555
return;
551556
}

0 commit comments

Comments
 (0)