mirror of
https://salsa.debian.org/dskoll/remind.git
synced 2026-04-16 06:18:47 +02:00
Keep reading inotify events until 0.2 seconds elapses between successive events.
This commit is contained in:
21
src/queue.c
21
src/queue.c
@@ -930,18 +930,27 @@ static void consume_inotify_events(int fd)
|
||||
int n;
|
||||
|
||||
struct timespec sleeptime;
|
||||
/* HACK: sleep for 0.2 seconds to let multiple events queue up so we
|
||||
only do a single reread */
|
||||
sleeptime.tv_sec = 0;
|
||||
sleeptime.tv_nsec = 200000000;
|
||||
nanosleep(&sleeptime, NULL);
|
||||
|
||||
int slept = 0;
|
||||
/* Consume all the inotify events */
|
||||
while(1) {
|
||||
n = read(fd, buf, sizeof(buf));
|
||||
if (n > 0) {
|
||||
/* Something new since we slept */
|
||||
slept = 0;
|
||||
}
|
||||
if (n < 0) {
|
||||
if (errno == EINTR) continue;
|
||||
return;
|
||||
if (slept) {
|
||||
/* Nothing new since we slept */
|
||||
return;
|
||||
}
|
||||
slept = 1;
|
||||
/* HACK: sleep for 0.2 seconds to let multiple events queue up so we
|
||||
only do a single reread */
|
||||
sleeptime.tv_sec = 0;
|
||||
sleeptime.tv_nsec = 200000000;
|
||||
nanosleep(&sleeptime, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user