reduce calls to win-title

rather than calling the script unconditionally per redraw, we now have
a `title_dirty` flag and keep track of when any of the relavent
information changes.

Co-authored-by: Arthur Williams <taaparthur@gmail.com>
Partially fixes: https://github.com/nsxiv/nsxiv/issues/258
This commit is contained in:
NRK
2022-06-01 14:59:16 +06:00
committed by N-R-K
parent 364c3d6f01
commit 810a9651a3
7 changed files with 16 additions and 6 deletions

8
main.c
View File

@ -85,6 +85,8 @@ static struct {
extcmd_t f;
} wintitle;
bool title_dirty;
static timeout_t timeouts[] = {
{ { 0, 0 }, false, redraw },
{ { 0, 0 }, false, reset_cursor },
@ -343,6 +345,7 @@ void load_image(int new)
close_info();
open_info();
arl_setup(&arl, files[fileidx].path);
title_dirty = true;
if (img.multi.cnt > 0 && img.multi.animate)
set_timeout(animate, img.multi.frames[img.multi.sel].delay, true);
@ -451,7 +454,10 @@ void redraw(void)
tns_render(&tns);
}
update_info();
win_set_title(&win, false);
if (title_dirty) {
win_set_title(&win, false);
title_dirty = false;
}
win_draw(&win);
reset_timeout(redraw);
reset_cursor();