conf: make delayed rendering timeouts configurable

This adds an undocumented 'tweak' section to footrc, with two new
options:

* delayed-render-lower
* delayed-render-upper

Both takes an integer value, representing the lower/upper timeout
values (in nano seconds) for delayed rendering.
This commit is contained in:
Daniel Eklöf 2020-03-17 16:46:54 +01:00
parent 29c781b832
commit 6e63fdb053
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
3 changed files with 65 additions and 7 deletions

View file

@ -145,11 +145,6 @@ fdm_ptmx(struct fdm *fdm, int fd, int events, void *data)
return false;
}
#if 0
if (!pollin)
return true;
#endif
/* Prevent blinking while typing */
term_cursor_blink_restart(term);
@ -220,9 +215,15 @@ fdm_ptmx(struct fdm *fdm, int fd, int events, void *data)
last = now;
#endif
uint64_t lower_ns = term->conf->tweak.delayed_render_lower_ns;
uint64_t upper_ns = term->conf->tweak.delayed_render_upper_ns;
assert(lower_ns < 1000000000);
assert(upper_ns < 1000000000);
assert(upper_ns > lower_ns);
timerfd_settime(
term->delayed_render_timer.lower_fd, 0,
&(struct itimerspec){.it_value = {.tv_nsec = 500000}},
&(struct itimerspec){.it_value = {.tv_nsec = lower_ns}},
NULL);
/* Second timeout - only reset when we render. Set to one
@ -230,7 +231,7 @@ fdm_ptmx(struct fdm *fdm, int fd, int events, void *data)
if (!term->delayed_render_timer.is_armed) {
timerfd_settime(
term->delayed_render_timer.upper_fd, 0,
&(struct itimerspec){.it_value = {.tv_nsec = 16666666 / 2}},
&(struct itimerspec){.it_value = {.tv_nsec = upper_ns}},
NULL);
term->delayed_render_timer.is_armed = true;
}