From b79ed6f3e476a18e7fccb63af0c90b3b69cb5b84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Tue, 24 Mar 2020 17:41:33 +0100 Subject: [PATCH] term: delayed rendering: failure to read timers is always an error --- terminal.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/terminal.c b/terminal.c index bac6e232..36f0e42b 100644 --- a/terminal.c +++ b/terminal.c @@ -409,9 +409,6 @@ fdm_delayed_render(struct fdm *fdm, int fd, int events, void *data) if (errno == EAGAIN) return true; - if (!term->delayed_render_timer.is_armed) - return true; - LOG_ERRNO("failed to read timeout timer"); return false; } @@ -421,6 +418,9 @@ fdm_delayed_render(struct fdm *fdm, int fd, int events, void *data) else if (ret2 > 0) LOG_DBG("upper delay timer expired"); + if (ret1 == 0 && ret2 == 0) + return true; + #if PTMX_TIMING last = (struct timespec){0}; #endif @@ -429,12 +429,9 @@ fdm_delayed_render(struct fdm *fdm, int fd, int events, void *data) struct itimerspec reset = {{0}}; timerfd_settime(term->delayed_render_timer.lower_fd, 0, &reset, NULL); timerfd_settime(term->delayed_render_timer.upper_fd, 0, &reset, NULL); + term->delayed_render_timer.is_armed = false; - if (term->delayed_render_timer.is_armed) { - term->delayed_render_timer.is_armed = false; - render_refresh(term); - } - + render_refresh(term); return true; }