mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-28 07:03:00 +08:00
fix overflow in lv_anim_speed_to_time
This commit is contained in:
parent
8bc5770c28
commit
2353ca0621
@ -115,7 +115,9 @@ bool lv_anim_del(void * var, lv_anim_fp_t fp)
|
|||||||
uint16_t lv_anim_speed_to_time(uint16_t speed, int32_t start, int32_t end)
|
uint16_t lv_anim_speed_to_time(uint16_t speed, int32_t start, int32_t end)
|
||||||
{
|
{
|
||||||
int32_t d = LV_MATH_ABS((int32_t) start - end);
|
int32_t d = LV_MATH_ABS((int32_t) start - end);
|
||||||
uint16_t time = (int32_t)((int32_t)(d * 1000) / speed);
|
uint32_t time = (int32_t)((int32_t)(d * 1000) / speed);
|
||||||
|
|
||||||
|
if(time > UINT16_MAX) time = UINT16_MAX;
|
||||||
|
|
||||||
if(time == 0) {
|
if(time == 0) {
|
||||||
time++;
|
time++;
|
||||||
|
@ -43,7 +43,7 @@ typedef struct _lv_anim_t
|
|||||||
lv_anim_path_t path; /*An array with the steps of animations*/
|
lv_anim_path_t path; /*An array with the steps of animations*/
|
||||||
int32_t start; /*Start value*/
|
int32_t start; /*Start value*/
|
||||||
int32_t end; /*End value*/
|
int32_t end; /*End value*/
|
||||||
int16_t time; /*Animation time in ms*/
|
uint16_t time; /*Animation time in ms*/
|
||||||
int16_t act_time; /*Current time in animation. Set to negative to make delay.*/
|
int16_t act_time; /*Current time in animation. Set to negative to make delay.*/
|
||||||
uint16_t playback_pause; /*Wait before play back*/
|
uint16_t playback_pause; /*Wait before play back*/
|
||||||
uint16_t repeat_pause; /*Wait before repeat*/
|
uint16_t repeat_pause; /*Wait before repeat*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user