From b3fce58c738513c8ab39d49374bf252dee3c44a1 Mon Sep 17 00:00:00 2001 From: Jcomp Date: Thu, 15 Feb 2024 11:43:41 +0000 Subject: [PATCH] Fix monitor response time --- src/monitor.d | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/monitor.d b/src/monitor.d index 1368df7e..3d67cc2b 100644 --- a/src/monitor.d +++ b/src/monitor.d @@ -488,7 +488,9 @@ final class Monitor { while (true) { bool hasNotification = false; - while (true) { + int sleep_counter = 0; + // Batch events up to 5 seconds + while (sleep_counter < 5) { int ret = poll(&fds, 1, 0); if (ret == -1) throw new MonitorException("poll failed"); else if (ret == 0) break; // no events available @@ -621,7 +623,12 @@ final class Monitor { skip: i += inotify_event.sizeof + event.len; } - Thread.sleep(dur!"seconds"(1)); + + // Sleep for one second to prevent missing fast-changing events. + if (poll(&fds, 1, 0) == 0) { + sleep_counter += 1; + Thread.sleep(dur!"seconds"(1)); + } } if (!hasNotification) break; processChanges();