From 0abc31cd76c60ae21b75b6eb40bd12f350348877 Mon Sep 17 00:00:00 2001 From: speedie Date: Tue, 8 Aug 2023 22:14:29 +0200 Subject: [PATCH] Open FIFO every 0.1 sec, add 'update' --- libs/fifo.c | 5 ++++- libs/main.c | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/libs/fifo.c b/libs/fifo.c index 77319fd..7041aac 100644 --- a/libs/fifo.c +++ b/libs/fifo.c @@ -27,6 +27,9 @@ void execute_fifo_cmd(void) { drawmenu(); } else if (!strcmp(fifot, "match")) { match(); + } else if (!strcmp(fifot, "update")) { + match(); + drawmenu(); } else if (!strcmp(fifot, "test")) { fprintf(stderr, "Test print\n"); } else if (!strcmp(fifot, "die")) { @@ -47,7 +50,7 @@ void execute_fifo_cmd(void) { void *fifocmd(void *n) { for (;;) { - sleep(1); + msleep(0.1); if (done) { execute_fifo_cmd(); diff --git a/libs/main.c b/libs/main.c index 2348009..fddd22c 100644 --- a/libs/main.c +++ b/libs/main.c @@ -1,5 +1,8 @@ /* See LICENSE file for copyright and license details. */ +#include +#include + #ifndef MAX #define MAX(A, B) ((A) > (B) ? (A) : (B)) #endif @@ -85,3 +88,22 @@ void *ecalloc(size_t nmemb, size_t size) { die("calloc:"); return p; } + +int msleep(long sec) { + struct timespec ts; + int ret; + + if (sec < 0) { + errno = EINVAL; + return -1; + } + + ts.tv_sec = sec / 1000; + ts.tv_nsec = (sec % 1000) * 1000000; + + do { + ret = nanosleep(&ts, &ts); + } while (ret && errno == EINTR); + + return ret; +}