# st

Unnamed repository; edit this file 'description' to name the repository.

| Log | Files | Refs | README | LICENSE

    commit 1b514048b254827f1a83c05e1b2a2428bf31924e
    parent 3604445ffc6ff1bfdfc7614771ca659e423b404b
    Author: Ivan Delalande <colona@ycc.fr>
    Date:   Sun, 15 Feb 2015 00:34:03 +0100

    Let curses do the dirty work for flash

    Use the terminfo delay syntax ($<x>) in our flash capability to avoid
    hardcoding a fixed delay in redraw() when called from tsetmode() with
    DECSCNM.
    We need to turn on the npc capability so that delays are made with
    xon/xoff instead of padding characters.

    Diffstat:
    Mst.c | 21++++++---------------
    Mst.info | 3++-

    2 files changed, 8 insertions(+), 16 deletions(-)
    diff --git a/st.c b/st.c
    @@ -63,8 +63,6 @@ char *argv0;
     #define XK_NO_MOD     0
     #define XK_SWITCH_MOD (1<<13)

    -#define REDRAW_TIMEOUT (80*1000) /* 80 ms */
    -
     /* macros */
     #define MIN(a, b)  ((a) < (b) ? (a) : (b))
     #define MAX(a, b)  ((a) < (b) ? (b) : (a))
    @@ -349,7 +347,7 @@ typedef struct {

     static void die(const char *, ...);
     static void draw(void);
    -static void redraw(int);
    +static void redraw(void);
     static void drawregion(int, int, int, int);
     static void execsh(void);
     static void sigchld(int);
    @@ -1826,7 +1824,7 @@ tsetmode(bool priv, bool set, int *args, int narg) {
     				mode = term.mode;
     				MODBIT(term.mode, set, MODE_REVERSE);
     				if(mode != term.mode)
    -					redraw(REDRAW_TIMEOUT);
    +					redraw();
     				break;
     			case 6: /* DECOM -- Origin */
     				MODBIT(term.c.state, set, CURSOR_ORIGIN);
    @@ -2200,7 +2198,7 @@ strhandle(void) {
     				 * TODO if defaultbg color is changed, borders
     				 * are dirty
     				 */
    -				redraw(0);
    +				redraw();
     			}
     			return;
     		}
    @@ -3093,7 +3091,7 @@ xzoomabs(const Arg *arg) {
     	xunloadfonts();
     	xloadfonts(usedfont, arg->i);
     	cresize(0, 0);
    -	redraw(0);
    +	redraw();
     	xhints();
     }

    @@ -3558,16 +3556,9 @@ xresettitle(void) {
     }

     void
    -redraw(int timeout) {
    -	struct timespec tv = {0, timeout * 1000};
    -
    +redraw(void) {
     	tfulldirt();
     	draw();
    -
    -	if(timeout > 0) {
    -		nanosleep(&tv, NULL);
    -		XSync(xw.dpy, False); /* necessary for a good tput flash */
    -	}
     }

     void
    @@ -3634,7 +3625,7 @@ expose(XEvent *ev) {
     		if(!e->count)
     			xw.state &= ~WIN_REDRAW;
     	}
    -	redraw(0);
    +	redraw();
     }

     void
    diff --git a/st.info b/st.info
    @@ -32,7 +32,7 @@ st| simpleterm,
     	el=\E[K,
     	el1=\E[1K,
     	enacs=\E)0,
    -	flash=\E[?5h\E[?5l,
    +	flash=\E[?5h$<80/>\E[?5l,
     	fsl=^G,
     	home=\E[H,
     	hpa=\E[%i%p1%dG,
    @@ -150,6 +150,7 @@ st| simpleterm,
     	mir,
     	msgr,
     	ncv#3,
    +	npc,
     	op=\E[39;49m,
     	pairs#64,
     	mc0=\E[i,