Fix bug in animation management for lv_label
This commit is contained in:
parent
50ae0ae5e0
commit
39d9fc2053
|
@ -0,0 +1,51 @@
|
||||||
|
Index: src/libs/lvgl/src/lv_misc/lv_anim.c
|
||||||
|
IDEA additional info:
|
||||||
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
|
<+>UTF-8
|
||||||
|
===================================================================
|
||||||
|
diff --git a/src/libs/lvgl/src/lv_misc/lv_anim.c b/src/libs/lvgl/src/lv_misc/lv_anim.c
|
||||||
|
--- a/src/libs/lvgl/src/lv_misc/lv_anim.c (revision 12a3b6cc8ec1fd6b951c353ab3a5fbbb9934fdd4)
|
||||||
|
+++ b/src/libs/lvgl/src/lv_misc/lv_anim.c (date 1610901672072)
|
||||||
|
@@ -158,12 +158,12 @@
|
||||||
|
* @param end end value of the animation
|
||||||
|
* @return the required time [ms] for the animation with the given parameters
|
||||||
|
*/
|
||||||
|
-uint16_t lv_anim_speed_to_time(uint16_t speed, lv_anim_value_t start, lv_anim_value_t end)
|
||||||
|
+uint32_t lv_anim_speed_to_time(uint16_t speed, lv_anim_value_t start, lv_anim_value_t end)
|
||||||
|
{
|
||||||
|
int32_t d = LV_MATH_ABS((int32_t)start - end);
|
||||||
|
uint32_t time = (int32_t)((int32_t)(d * 1000) / speed);
|
||||||
|
|
||||||
|
- if(time > UINT16_MAX) time = UINT16_MAX;
|
||||||
|
+ if(time > UINT32_MAX) time = UINT32_MAX;
|
||||||
|
|
||||||
|
if(time == 0) {
|
||||||
|
time++;
|
||||||
|
Index: src/libs/lvgl/src/lv_misc/lv_anim.h
|
||||||
|
IDEA additional info:
|
||||||
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
|
<+>UTF-8
|
||||||
|
===================================================================
|
||||||
|
diff --git a/src/libs/lvgl/src/lv_misc/lv_anim.h b/src/libs/lvgl/src/lv_misc/lv_anim.h
|
||||||
|
--- a/src/libs/lvgl/src/lv_misc/lv_anim.h (revision 12a3b6cc8ec1fd6b951c353ab3a5fbbb9934fdd4)
|
||||||
|
+++ b/src/libs/lvgl/src/lv_misc/lv_anim.h (date 1610901672076)
|
||||||
|
@@ -73,8 +73,8 @@
|
||||||
|
lv_anim_ready_cb_t ready_cb; /**< Call it when the animation is ready*/
|
||||||
|
int32_t start; /**< Start value*/
|
||||||
|
int32_t end; /**< End value*/
|
||||||
|
- uint16_t time; /**< Animation time in ms*/
|
||||||
|
- int16_t act_time; /**< Current time in animation. Set to negative to make delay.*/
|
||||||
|
+ uint32_t time; /**< Animation time in ms*/
|
||||||
|
+ int32_t act_time; /**< Current time in animation. Set to negative to make delay.*/
|
||||||
|
uint16_t playback_pause; /**< Wait before play back*/
|
||||||
|
uint16_t repeat_pause; /**< Wait before repeat*/
|
||||||
|
#if LV_USE_USER_DATA
|
||||||
|
@@ -266,7 +266,7 @@
|
||||||
|
* @param end end value of the animation
|
||||||
|
* @return the required time [ms] for the animation with the given parameters
|
||||||
|
*/
|
||||||
|
-uint16_t lv_anim_speed_to_time(uint16_t speed, lv_anim_value_t start, lv_anim_value_t end);
|
||||||
|
+uint32_t lv_anim_speed_to_time(uint16_t speed, lv_anim_value_t start, lv_anim_value_t end);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate the current value of an animation applying linear characteristic
|
|
@ -158,12 +158,12 @@ uint16_t lv_anim_count_running(void)
|
||||||
* @param end end value of the animation
|
* @param end end value of the animation
|
||||||
* @return the required time [ms] for the animation with the given parameters
|
* @return the required time [ms] for the animation with the given parameters
|
||||||
*/
|
*/
|
||||||
uint16_t lv_anim_speed_to_time(uint16_t speed, lv_anim_value_t start, lv_anim_value_t end)
|
uint32_t lv_anim_speed_to_time(uint16_t speed, lv_anim_value_t start, lv_anim_value_t end)
|
||||||
{
|
{
|
||||||
int32_t d = LV_MATH_ABS((int32_t)start - end);
|
int32_t d = LV_MATH_ABS((int32_t)start - end);
|
||||||
uint32_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 > UINT32_MAX) time = UINT32_MAX;
|
||||||
|
|
||||||
if(time == 0) {
|
if(time == 0) {
|
||||||
time++;
|
time++;
|
||||||
|
|
|
@ -73,8 +73,8 @@ typedef struct _lv_anim_t
|
||||||
lv_anim_ready_cb_t ready_cb; /**< Call it when the animation is ready*/
|
lv_anim_ready_cb_t ready_cb; /**< Call it when the animation is ready*/
|
||||||
int32_t start; /**< Start value*/
|
int32_t start; /**< Start value*/
|
||||||
int32_t end; /**< End value*/
|
int32_t end; /**< End value*/
|
||||||
uint16_t time; /**< Animation time in ms*/
|
uint32_t time; /**< Animation time in ms*/
|
||||||
int16_t act_time; /**< Current time in animation. Set to negative to make delay.*/
|
int32_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*/
|
||||||
#if LV_USE_USER_DATA
|
#if LV_USE_USER_DATA
|
||||||
|
@ -266,7 +266,7 @@ uint16_t lv_anim_count_running(void);
|
||||||
* @param end end value of the animation
|
* @param end end value of the animation
|
||||||
* @return the required time [ms] for the animation with the given parameters
|
* @return the required time [ms] for the animation with the given parameters
|
||||||
*/
|
*/
|
||||||
uint16_t lv_anim_speed_to_time(uint16_t speed, lv_anim_value_t start, lv_anim_value_t end);
|
uint32_t lv_anim_speed_to_time(uint16_t speed, lv_anim_value_t start, lv_anim_value_t end);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate the current value of an animation applying linear characteristic
|
* Calculate the current value of an animation applying linear characteristic
|
||||||
|
|
Loading…
Reference in New Issue
Block a user