Introduction
Introduction Statistics Contact Development Disclaimer Help
tRemove timeout in the main loop - st - [fork] customized build of st, the simp…
git clone git://src.adamsgaard.dk/st
Log
Files
Refs
README
LICENSE
---
commit 85849ce72aa4e9cee307a031b97777e9eba2d453
parent 15cc8754c2e272ebac6e86845859816e881da000
Author: Roberto E. Vargas Caballero <[email protected]>
Date: Sun, 16 Sep 2012 10:47:21 +0200
Remove timeout in the main loop
The main loop waits until there is some data to read in file descriptors of
tthe X server or the pseudo tty. But it uses a timeout in select(), which
causes that st awake each 20 ms, even it doesn't have something to do. This
patch removes this problem removing the timeout, which is not needed.
---
TODO | 1 -
st.c | 27 +++------------------------
2 files changed, 3 insertions(+), 25 deletions(-)
Diffstat:
M TODO | 1 -
M st.c | 27 +++------------------------
2 files changed, 3 insertions(+), 25 deletions(-)
---
diff --git a/TODO b/TODO
t@@ -15,7 +15,6 @@ code & interface
* clean selection code
* clean and complete terminfo entry
-* remove the timeouts in the main loop
bugs
----
diff --git a/st.c b/st.c
t@@ -53,8 +53,6 @@
#define XK_NO_MOD UINT_MAX
#define XK_ANY_MOD 0
-#define SELECT_TIMEOUT (20*1000) /* 20 ms */
-#define DRAW_TIMEOUT (20*1000) /* 20 ms */
#define REDRAW_TIMEOUT (80*1000) /* 80 ms */
#define SERRNO strerror(errno)
t@@ -205,7 +203,6 @@ typedef struct {
int ch; /* char height */
int cw; /* char width */
char state; /* focus, redraw, visible */
- struct timeval lastdraw;
} XWindow;
typedef struct {
t@@ -250,7 +247,6 @@ static void drawregion(int, int, int, int);
static void execsh(void);
static void sigchld(int);
static void run(void);
-static bool last_draw_too_old(void);
static void csidump(void);
static void csihandle(void);
t@@ -2158,7 +2154,6 @@ void
draw() {
drawregion(0, 0, term.col, term.row);
xcopy();
- gettimeofday(&xw.lastdraw, NULL);
}
void
t@@ -2345,41 +2340,25 @@ resize(XEvent *e) {
ttyresize(col, row);
}
-bool
-last_draw_too_old(void) {
- struct timeval now;
- gettimeofday(&now, NULL);
- return TIMEDIFF(now, xw.lastdraw) >= DRAW_TIMEOUT/1000;
-}
-
void
run(void) {
XEvent ev;
fd_set rfd;
int xfd = XConnectionNumber(xw.dpy);
- struct timeval timeout = {0};
- bool stuff_to_print = 0;
for(;;) {
FD_ZERO(&rfd);
FD_SET(cmdfd, &rfd);
FD_SET(xfd, &rfd);
- timeout.tv_sec = 0;
- timeout.tv_usec = SELECT_TIMEOUT;
- if(select(MAX(xfd, cmdfd)+1, &rfd, NULL, NULL, &timeout) < 0) {
+ if(select(MAX(xfd, cmdfd)+1, &rfd, NULL, NULL, NULL) < 0) {
if(errno == EINTR)
continue;
die("select failed: %s\n", SERRNO);
}
- if(FD_ISSET(cmdfd, &rfd)) {
+ if(FD_ISSET(cmdfd, &rfd))
ttyread();
- stuff_to_print = 1;
- }
- if(stuff_to_print && last_draw_too_old()) {
- stuff_to_print = 0;
- draw();
- }
+ draw();
while(XPending(xw.dpy)) {
XNextEvent(xw.dpy, &ev);
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.