From 37cc5f52eb1ad0f86c9459285e44726a5bdb0950 Mon Sep 17 00:00:00 2001 From: Witold Filipczyk Date: Sun, 11 Dec 2022 16:22:41 +0100 Subject: [PATCH] [terminal] Periodically refresh screen DISPLAY_TIME_REFRESH 50ms (No more than 20fps). It is still using too much CPU for refreshing screen. --- src/main/select.c | 11 ++++++++++- src/setup.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/select.c b/src/main/select.c index cf638965..77c14f15 100644 --- a/src/main/select.c +++ b/src/main/select.c @@ -489,6 +489,15 @@ set_handlers(int fd, select_handler_T read_func, select_handler_T write_func, } } +static timer_id_T periodic_redraw_timer = TIMER_ID_UNDEF; + +static void +periodic_redraw_all_terminals(void *data) +{ + redraw_all_terminals(); + install_timer(&periodic_redraw_timer, DISPLAY_TIME_REFRESH, periodic_redraw_all_terminals, NULL); +} + void select_loop(void (*init)(void)) { @@ -515,12 +524,12 @@ select_loop(void (*init)(void)) } #endif if (event_enabled) { + periodic_redraw_all_terminals(NULL); while (!program.terminate) { check_signals(); if (1 /*(!F)*/) { do_event_loop(EVLOOP_NONBLOCK); check_signals(); - redraw_all_terminals(); } if (program.terminate) break; do_event_loop(EVLOOP_ONCE); diff --git a/src/setup.h b/src/setup.h index 589ff064..161cf8dc 100644 --- a/src/setup.h +++ b/src/setup.h @@ -61,6 +61,7 @@ #define DISPLAY_TIME_MIN ((milliseconds_T) 200) #define DISPLAY_TIME 20 +#define DISPLAY_TIME_REFRESH ((milliseconds_T) 50) #define HTML_LEFT_MARGIN 3 #define HTML_MAX_TABLE_LEVEL 10