mirror of
https://github.com/lvgl/lvgl.git
synced 2024-11-24 10:22:53 +08:00
fix(demo): fix showing the average FPS
This commit is contained in:
parent
e3380a8fe8
commit
96ce505651
@ -12,6 +12,7 @@
|
||||
|
||||
#include "lv_demo_music_main.h"
|
||||
#include "lv_demo_music_list.h"
|
||||
#include "../../src/core/lv_global.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
@ -103,6 +104,10 @@ static const uint32_t time_list[] = {
|
||||
2 * 60 + 19,
|
||||
};
|
||||
|
||||
#if LV_USE_PERF_MONITOR || LV_DEMO_MUSIC_AUTO_PLAY
|
||||
#define sysmon_perf LV_GLOBAL_DEFAULT()->sysmon_perf
|
||||
#endif
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
@ -225,7 +230,8 @@ static void auto_step_cb(lv_timer_t * t)
|
||||
lv_obj_t * num = lv_label_create(bg);
|
||||
lv_obj_set_style_text_font(num, font_large, 0);
|
||||
#if LV_USE_PERF_MONITOR
|
||||
lv_label_set_text_fmt(num, "%" LV_PRIu32, lv_refr_get_fps_avg());
|
||||
const lv_sysmon_perf_info_t * info = lv_subject_get_pointer(&sysmon_perf.subject);
|
||||
lv_label_set_text_fmt(num, "%" LV_PRIu32, info->calculated.cpu_avg_total);
|
||||
#endif
|
||||
lv_obj_align(num, LV_ALIGN_TOP_MID, 0, 120);
|
||||
|
||||
|
@ -84,7 +84,6 @@ void _lv_sysmon_builtin_deinit(void)
|
||||
{
|
||||
lv_async_call_cancel(sysmon_backend_init_async_cb, NULL);
|
||||
#if LV_USE_PERF_MONITOR
|
||||
// lv_subject_deinit(&sysmon_perf->subject);
|
||||
lv_timer_delete(sysmon_perf.timer);
|
||||
#endif
|
||||
}
|
||||
@ -102,8 +101,6 @@ lv_obj_t * lv_sysmon_create(lv_obj_t * parent)
|
||||
return label;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**********************
|
||||
* STATIC FUNCTIONS
|
||||
**********************/
|
||||
@ -147,6 +144,7 @@ static void perf_monitor_disp_event_cb(lv_event_t * e)
|
||||
static void perf_update_timer_cb(lv_timer_t * t)
|
||||
{
|
||||
lv_sysmon_perf_info_t * info = lv_timer_get_user_data(t);
|
||||
info->calculated.run_cnt++;
|
||||
|
||||
info->calculated.fps = info->measured.refr_interval_sum ? (1000 * info->measured.refr_cnt /
|
||||
info->measured.refr_interval_sum) : 0;
|
||||
@ -159,12 +157,19 @@ static void perf_update_timer_cb(lv_timer_t * t)
|
||||
: 0;
|
||||
info->calculated.render_real_avg_time = info->calculated.render_avg_time - info->calculated.flush_avg_time;
|
||||
|
||||
info->calculated.cpu_avg_total = ((info->calculated.cpu_avg_total * (info->calculated.run_cnt - 1)) +
|
||||
info->calculated.cpu) / info->calculated.run_cnt;
|
||||
info->calculated.fps_avg_total = ((info->calculated.fps_avg_total * (info->calculated.run_cnt - 1)) +
|
||||
info->calculated.fps) / info->calculated.run_cnt;
|
||||
|
||||
lv_subject_set_pointer(&sysmon_perf.subject, info);
|
||||
|
||||
uint32_t refr_start = info->measured.refr_start;
|
||||
lv_sysmon_perf_info_t prev_info = *info;
|
||||
lv_memzero(info, sizeof(lv_sysmon_perf_info_t));
|
||||
info->measured.refr_start = refr_start;
|
||||
|
||||
info->measured.refr_start = prev_info.measured.refr_start;
|
||||
info->calculated.cpu_avg_total = prev_info.calculated.cpu_avg_total;
|
||||
info->calculated.fps_avg_total = prev_info.calculated.fps_avg_total;
|
||||
info->calculated.run_cnt = prev_info.calculated.run_cnt;
|
||||
}
|
||||
|
||||
static void perf_observer_cb(lv_subject_t * subject, lv_observer_t * observer)
|
||||
|
@ -23,6 +23,10 @@ extern "C" {
|
||||
#error "lv_sysmon: lv_label is required. Enable it in lv_conf.h (LV_USE_LABEL 1) "
|
||||
#endif
|
||||
|
||||
#if LV_USE_OBSERVER == 0
|
||||
#error "lv_observer: lv_observer is required. Enable it in lv_conf.h (LV_USE_OBSERVER 1) "
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
@ -58,6 +62,9 @@ typedef struct {
|
||||
uint32_t render_avg_time;
|
||||
uint32_t flush_avg_time;
|
||||
uint32_t render_real_avg_time;
|
||||
uint32_t cpu_avg_total;
|
||||
uint32_t fps_avg_total;
|
||||
uint32_t run_cnt;
|
||||
} calculated;
|
||||
|
||||
} lv_sysmon_perf_info_t;
|
||||
|
Loading…
Reference in New Issue
Block a user