Introduce our own shutdown callback mechanism.

Instead of adding stuff to `_shutdown()`, we can now register a shutdown
routine from the respective `init()` function of our modules.

This also has the advantage, that we're sure they're called in reverse
order from how the initialization happened.

I didn't simply use `atexit()` because POSIX says that the number of
possible callbacks is limited (min 32) and I was not sure whether
we will maybe extend this number at one point.

Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
This commit is contained in:
Steffen Jaeckel
2025-03-07 11:44:31 +01:00
parent 662a0be633
commit c5a131ee46
39 changed files with 321 additions and 327 deletions

View File

@@ -89,10 +89,26 @@ static Display* display;
static void _ui_draw_term_title(void);
static void
_ui_close(void)
{
g_timer_destroy(ui_idle_time);
endwin();
notifier_uninit();
cons_clear_alerts();
wins_destroy();
inp_close();
status_bar_close();
free_title_bar();
delwin(main_scr);
delscreen(set_term(NULL));
}
void
ui_init(void)
{
log_info("Initialising UI");
prof_add_shutdown_routine(_ui_close);
main_scr = initscr();
nonl();
cbreak();
@@ -180,21 +196,6 @@ ui_reset_idle_time(void)
g_timer_start(ui_idle_time);
}
void
ui_close(void)
{
g_timer_destroy(ui_idle_time);
endwin();
notifier_uninit();
cons_clear_alerts();
wins_destroy();
inp_close();
status_bar_close();
free_title_bar();
delwin(main_scr);
delscreen(set_term(NULL));
}
void
ui_resize(void)
{