Xinqi Bao's Git
projects
/
st.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
Remove timeout in the main loop
[st.git]
/
st.c
diff --git
a/st.c
b/st.c
index
b013bca
..
d7ca875
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-53,8
+53,6
@@
#define XK_NO_MOD UINT_MAX
#define XK_ANY_MOD 0
#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)
#define REDRAW_TIMEOUT (80*1000) /* 80 ms */
#define SERRNO strerror(errno)
@@
-205,7
+203,6
@@
typedef struct {
int ch; /* char height */
int cw; /* char width */
char state; /* focus, redraw, visible */
int ch; /* char height */
int cw; /* char width */
char state; /* focus, redraw, visible */
- struct timeval lastdraw;
} XWindow;
typedef struct {
} XWindow;
typedef struct {
@@
-250,7
+247,6
@@
static void drawregion(int, int, int, int);
static void execsh(void);
static void sigchld(int);
static void run(void);
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);
static void csidump(void);
static void csihandle(void);
@@
-2150,6
+2146,7
@@
redraw(void) {
struct timespec tv = {0, REDRAW_TIMEOUT * 1000};
tfulldirt();
draw();
struct timespec tv = {0, REDRAW_TIMEOUT * 1000};
tfulldirt();
draw();
+ XSync(xw.dpy, False); /* necessary for a good tput flash */
nanosleep(&tv, NULL);
}
nanosleep(&tv, NULL);
}
@@
-2157,7
+2154,6
@@
void
draw() {
drawregion(0, 0, term.col, term.row);
xcopy();
draw() {
drawregion(0, 0, term.col, term.row);
xcopy();
- gettimeofday(&xw.lastdraw, NULL);
}
void
}
void
@@
-2344,41
+2340,25
@@
resize(XEvent *e) {
ttyresize(col, row);
}
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);
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);
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(errno == EINTR)
continue;
die("select failed: %s\n", SERRNO);
}
- if(FD_ISSET(cmdfd, &rfd))
{
+ if(FD_ISSET(cmdfd, &rfd))
ttyread();
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);
while(XPending(xw.dpy)) {
XNextEvent(xw.dpy, &ev);