mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-11 05:33:55 -04:00
main: better names of timers for delayed rendering timeouts
This commit is contained in:
parent
1a9ec997b3
commit
b3a419f427
1 changed files with 18 additions and 12 deletions
30
main.c
30
main.c
|
|
@ -895,8 +895,8 @@ main(int argc, char *const *argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool timeout_is_armed = false;
|
bool timeout_is_armed = false;
|
||||||
int timeout_fd1 = timerfd_create(CLOCK_REALTIME, TFD_NONBLOCK | TFD_CLOEXEC);
|
int delay_render_timer_lower = timerfd_create(CLOCK_REALTIME, TFD_NONBLOCK | TFD_CLOEXEC);
|
||||||
int timeout_fd2 = timerfd_create(CLOCK_REALTIME, TFD_NONBLOCK | TFD_CLOEXEC);
|
int delay_render_timer_upper = timerfd_create(CLOCK_REALTIME, TFD_NONBLOCK | TFD_CLOEXEC);
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
struct pollfd fds[] = {
|
struct pollfd fds[] = {
|
||||||
|
|
@ -905,8 +905,8 @@ main(int argc, char *const *argv)
|
||||||
{.fd = term.kbd.repeat.fd, .events = POLLIN},
|
{.fd = term.kbd.repeat.fd, .events = POLLIN},
|
||||||
{.fd = term.flash.fd, .events = POLLIN},
|
{.fd = term.flash.fd, .events = POLLIN},
|
||||||
{.fd = term.blink.fd, .events = POLLIN},
|
{.fd = term.blink.fd, .events = POLLIN},
|
||||||
{.fd = timeout_fd1, .events = POLLIN},
|
{.fd = delay_render_timer_lower, .events = POLLIN},
|
||||||
{.fd = timeout_fd2, .events = POLLIN},
|
{.fd = delay_render_timer_upper, .events = POLLIN},
|
||||||
};
|
};
|
||||||
|
|
||||||
wl_display_flush(term.wl.display);
|
wl_display_flush(term.wl.display);
|
||||||
|
|
@ -929,9 +929,9 @@ main(int argc, char *const *argv)
|
||||||
ssize_t ret2 = 0;
|
ssize_t ret2 = 0;
|
||||||
|
|
||||||
if (fds[5].revents & POLLIN)
|
if (fds[5].revents & POLLIN)
|
||||||
ret1 = read(timeout_fd1, &unused, sizeof(unused));
|
ret1 = read(delay_render_timer_lower, &unused, sizeof(unused));
|
||||||
if (fds[6].revents & POLLIN)
|
if (fds[6].revents & POLLIN)
|
||||||
ret2 = read(timeout_fd2, &unused, sizeof(unused));
|
ret2 = read(delay_render_timer_upper, &unused, sizeof(unused));
|
||||||
|
|
||||||
if ((ret1 < 0 || ret2 < 0) && errno != EAGAIN)
|
if ((ret1 < 0 || ret2 < 0) && errno != EAGAIN)
|
||||||
LOG_ERRNO("failed to read timeout timer");
|
LOG_ERRNO("failed to read timeout timer");
|
||||||
|
|
@ -940,8 +940,8 @@ main(int argc, char *const *argv)
|
||||||
|
|
||||||
/* Reset timers */
|
/* Reset timers */
|
||||||
timeout_is_armed = false;
|
timeout_is_armed = false;
|
||||||
timerfd_settime(timeout_fd1, 0, &(struct itimerspec){.it_value = {0}}, NULL);
|
timerfd_settime(delay_render_timer_lower, 0, &(struct itimerspec){.it_value = {0}}, NULL);
|
||||||
timerfd_settime(timeout_fd2, 0, &(struct itimerspec){.it_value = {0}}, NULL);
|
timerfd_settime(delay_render_timer_upper, 0, &(struct itimerspec){.it_value = {0}}, NULL);
|
||||||
} else
|
} else
|
||||||
assert(false);
|
assert(false);
|
||||||
}
|
}
|
||||||
|
|
@ -1003,11 +1003,17 @@ main(int argc, char *const *argv)
|
||||||
*/
|
*/
|
||||||
if (term.render.frame_callback == NULL) {
|
if (term.render.frame_callback == NULL) {
|
||||||
/* First timeout - reset each time we receive input. */
|
/* First timeout - reset each time we receive input. */
|
||||||
timerfd_settime(timeout_fd1, 0, &(struct itimerspec){.it_value = {.tv_nsec = 1000000}}, NULL);
|
timerfd_settime(
|
||||||
|
delay_render_timer_lower, 0,
|
||||||
|
&(struct itimerspec){.it_value = {.tv_nsec = 1000000}},
|
||||||
|
NULL);
|
||||||
|
|
||||||
/* Second timeout - only reset when we render. Set to one frame (assuming 60HZ) */
|
/* Second timeout - only reset when we render. Set to one frame (assuming 60HZ) */
|
||||||
if (!timeout_is_armed) {
|
if (!timeout_is_armed) {
|
||||||
timerfd_settime(timeout_fd2, 0, &(struct itimerspec){.it_value = {.tv_nsec = 16666666}}, NULL);
|
timerfd_settime(
|
||||||
|
delay_render_timer_upper, 0,
|
||||||
|
&(struct itimerspec){.it_value = {.tv_nsec = 16666666}},
|
||||||
|
NULL);
|
||||||
timeout_is_armed = true;
|
timeout_is_armed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1083,8 +1089,8 @@ main(int argc, char *const *argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
close(timeout_fd1);
|
close(delay_render_timer_lower);
|
||||||
close(timeout_fd2);
|
close(delay_render_timer_upper);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
mtx_lock(&term.render.workers.lock);
|
mtx_lock(&term.render.workers.lock);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue