Hi!

I tried the recent version of st (changeset:   45:a0a803566aa4).

After the select call in run(), the timeout argument gets changed to the remaining time to wait, which will result in a timeout of 0 after a few iterations. (I think thats implemenetation dependand behaviour)
Attached is a patch to fix this issue.

Anyway, the algorithm to find out about the next event (input or x event) is not ideal because it will cause the cpu to wake up pretty often, even if there is nothing happening in the terminal. I dont know much about XLib, is there possibility to find out about a new X Event by querying a fd, which could be added to select?

greetings, Christoph Schied

diff -r a0a803566aa4 st.c
--- a/st.c      Sun May 10 23:32:21 2009 +0200
+++ b/st.c      Wed May 13 21:13:49 2009 +0200
@@ -891,6 +891,7 @@
                }
                FD_ZERO(&rfd);
                FD_SET(cmdfd, &rfd);
+               tv.tv_usec = 10000;
                ret = select(cmdfd+1, &rfd, NULL, NULL, &tv);
                if(ret < 0) {
                        fprintf(stderr, "select: %m\n");

Reply via email to