commit 8427dcdb18de419d9d158dfa8eeedefe5baafc61
parent b0116ddb464d93adf3eeb2cd64f8ac9920cfc443
Author: lumidify <nobody@lumidify.org>
Date: Tue, 2 Jun 2020 18:56:19 +0200
Read from stdin instead of FIFO
Diffstat:
3 files changed, 15 insertions(+), 22 deletions(-)
diff --git a/ltk.c b/ltk.c
@@ -206,30 +206,26 @@ proc_cmds(ltk_window *window, char *buf) {
}
}
-/* copied from suckless st */
-#define TIMEDIFF(t1, t2) ((t1.tv_sec-t2.tv_sec)*1000 + \
- (t1.tv_nsec-t2.tv_nsec)/1E6)
-
/* FIXME: destroy remaining widgets in hash on exit */
int
ltk_mainloop(ltk_window *window) {
XEvent event;
- int fd_in;
struct stat st;
struct timespec tick;
+ struct timeval tv;
+ fd_set rfds;
+ int fd_in = fileno(stdin);
+ char buf[200]; /* FIXME: what would be sensible? */
+ int retval;
tick.tv_sec = 0;
tick.tv_nsec = 10000;
- char buf[200]; /* FIXME: what would be sensible? */
-
- if (lstat("ltk_in", &st) != -1) {
- /* FIXME... */
- unlink("ltk_in");
- }
+ tv.tv_sec = 0;
+ tv.tv_usec = 0;
- if (mkfifo("ltk_in", S_IRWXU)) return -1;
- fd_in = open("ltk_in", O_RDONLY | O_NONBLOCK, 0);
- if (fd_in == -1) return -1;
while (running) {
+ FD_ZERO(&rfds);
+ FD_SET(fd_in, &rfds);
+ retval = select(fd_in + 1, &rfds, NULL, NULL, &tv);
while (XPending(window->dpy)) {
XNextEvent(window->dpy, &event);
ltk_handle_event(window, event);
@@ -250,14 +246,13 @@ ltk_mainloop(ltk_window *window) {
free(last);
} while (cur);
window->first_event = window->last_event = NULL;
- } else if (!read_line(fd_in, buf, sizeof(buf))) {
+ } else if (retval != -1 && retval != 0 && !read_line(fd_in, buf, sizeof(buf))) {
proc_cmds(window, buf);
}
/* yes, this should be improved */
nanosleep(&tick, NULL);
}
- unlink("ltk_in");
}
void
diff --git a/test.gui b/test.gui
@@ -0,0 +1,4 @@
+create button btn1
+grid btn1 0 0
+create button btn2
+grid btn2 1 1
diff --git a/test.sh b/test.sh
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-echo "create button btn1" > ltk_in
-echo "grid btn1 0 0" > ltk_in
-echo "create button btn2" > ltk_in
-echo "grid btn2 1 1" > ltk_in