JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
fix cursor handling when alt screen is disabled
[st.git] / st.c
diff --git a/st.c b/st.c
index a4f467d..70caf82 100644 (file)
--- a/st.c
+++ b/st.c
@@ -1855,7 +1855,10 @@ tsetmode(bool priv, bool set, int *args, int narg) {
                                MODBIT(term.mode, set, MODE_8BIT);
                                break;
                        case 1049: /* swap screen & set/restore cursor as xterm */
+                               if (!allowaltscreen)
+                                       break;
                                tcursor((set) ? CURSOR_SAVE : CURSOR_LOAD);
+                               /* FALLTHRU */
                        case 47: /* swap screen */
                        case 1047:
                                if (!allowaltscreen)
@@ -3089,7 +3092,7 @@ xinit(void) {
        xresettitle();
        XMapWindow(xw.dpy, xw.win);
        xhints();
-       XSync(xw.dpy, 0);
+       XSync(xw.dpy, False);
 }
 
 void
@@ -3440,7 +3443,6 @@ void
 redraw(int timeout) {
        struct timespec tv = {0, timeout * 1000};
 
-       tfulldirt();
        draw();
 
        if(timeout > 0) {
@@ -3738,8 +3740,8 @@ run(void) {
        else
                cresize(xw.fw, xw.fh);
 
-       gettimeofday(&lastblink, NULL);
        gettimeofday(&last, NULL);
+       lastblink = last;
 
        for(xev = actionfps;;) {
                long deltatime;
@@ -3774,7 +3776,7 @@ run(void) {
                if(blinktimeout && TIMEDIFF(now, lastblink) > blinktimeout) {
                        tsetdirtattr(ATTR_BLINK);
                        term.mode ^= MODE_BLINK;
-                       gettimeofday(&lastblink, NULL);
+                       lastblink = now;
                        dodraw = 1;
                }
                deltatime = TIMEDIFF(now, last);