Introduction
Introduction Statistics Contact Development Disclaimer Help
tDoing it like the new run() was proposed. - st - [fork] customized build of st…
git clone git://src.adamsgaard.dk/st
Log
Files
Refs
README
LICENSE
---
commit 086cd61511aa5ca4cbef0048137bb9ae0467d283
parent 95033753be32e93915ddce14ea41b8765b665771
Author: Christoph Lohmann <[email protected]>
Date: Fri, 15 Feb 2013 19:30:43 +0100
Doing it like the new run() was proposed.
Diffstat:
M config.def.h | 3 ++-
M st.c | 38 ++++++++++++-----------------…
2 files changed, 17 insertions(+), 24 deletions(-)
---
diff --git a/config.def.h b/config.def.h
t@@ -14,7 +14,8 @@ static unsigned int doubleclicktimeout = 300;
static unsigned int tripleclicktimeout = 600;
/* frames per second st should at maximum draw to the screen */
-static unsigned int framespersecond = 60;
+static unsigned int xfps = 30;
+static unsigned int actionfps = 5;
/* TERM value */
static char termname[] = "st-256color";
diff --git a/st.c b/st.c
t@@ -3166,12 +3166,12 @@ void
run(void) {
XEvent ev;
fd_set rfd;
- int xfd = XConnectionNumber(xw.dpy);
+ int xfd = XConnectionNumber(xw.dpy), xev;
struct timeval drawtimeout, *tv = NULL, now, last;
gettimeofday(&last, NULL);
- for(;;) {
+ for(xev = actionfps;;) {
FD_ZERO(&rfd);
FD_SET(cmdfd, &rfd);
FD_SET(xfd, &rfd);
t@@ -3184,22 +3184,16 @@ run(void) {
gettimeofday(&now, NULL);
/* usecs until (next) frame */
drawtimeout.tv_sec = 0;
- drawtimeout.tv_usec = \
- ((1000/framespersecond) - TIMEDIFF(now, last)) * 1000;
-
- /* Let us draw a frame. */
- if(drawtimeout.tv_usec <= 0) {
- draw();
- XFlush(xw.dpy);
-
- last = now;
- tv = NULL;
- }
+ drawtimeout.tv_usec = (1000/xfps) * 1000;
+ tv = &drawtimeout;
if(FD_ISSET(cmdfd, &rfd))
ttyread();
- if(FD_ISSET(xfd, &rfd)) {
+ if(FD_ISSET(xfd, &rfd))
+ xev = actionfps;
+
+ if(TIMEDIFF(now, last) > (xev ? (1000/xfps) : (1000/actionfps)…
while(XPending(xw.dpy)) {
XNextEvent(xw.dpy, &ev);
if(XFilterEvent(&ev, None))
t@@ -3208,16 +3202,14 @@ run(void) {
(handler[ev.type])(&ev);
}
- if(drawtimeout.tv_usec <= 0) {
- draw();
- XFlush(xw.dpy);
- }
- }
+ draw();
+ XFlush(xw.dpy);
+ last = now;
- /* There is still some time to wait until next frame. */
- if(drawtimeout.tv_usec > 0) {
- tv = &drawtimeout;
- continue;
+ if(xev && !FD_ISSET(xfd, &rfd))
+ xev--;
+ if(!FD_ISSET(cmdfd, &rfd) && !FD_ISSET(xfd, &rfd))
+ tv = NULL;
}
}
}
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.