Fixed lock up when system time jumps backwards
authorRob Pilling <rob@egbert>
Wed, 19 Jun 2013 20:24:01 +0000 (21:24 +0100)
committerChristoph Lohmann <20h@r-36.net>
Sun, 27 Oct 2013 12:17:11 +0000 (13:17 +0100)
Signed-off-by: Christoph Lohmann <20h@r-36.net>
st.c

diff --git a/st.c b/st.c
index 50b58a7..d0a6218 100644 (file)
--- a/st.c
+++ b/st.c
@@ -3687,6 +3687,8 @@ run(void) {
        gettimeofday(&last, NULL);
 
        for(xev = actionfps;;) {
+               long deltatime;
+
                FD_ZERO(&rfd);
                FD_SET(cmdfd, &rfd);
                FD_SET(xfd, &rfd);
@@ -3720,8 +3722,9 @@ run(void) {
                        gettimeofday(&lastblink, NULL);
                        dodraw = 1;
                }
-               if(TIMEDIFF(now, last) \
-                               > (xev? (1000/xfps) : (1000/actionfps))) {
+               deltatime = TIMEDIFF(now, last);
+               if(deltatime > (xev? (1000/xfps) : (1000/actionfps))
+                               || deltatime < 0) {
                        dodraw = 1;
                        last = now;
                }