tLet curses do the dirty work for flash - st - [fork] customized build of st, t… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 1b514048b254827f1a83c05e1b2a2428bf31924e | |
parent 3604445ffc6ff1bfdfc7614771ca659e423b404b | |
Author: Ivan Delalande <[email protected]> | |
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: | |
M st.c | 21 ++++++--------------- | |
M st.info | 3 ++- | |
2 files changed, 8 insertions(+), 16 deletions(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -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)) | |
t@@ -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); | |
t@@ -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); | |
t@@ -2200,7 +2198,7 @@ strhandle(void) { | |
* TODO if defaultbg color is changed, borders | |
* are dirty | |
*/ | |
- redraw(0); | |
+ redraw(); | |
} | |
return; | |
} | |
t@@ -3093,7 +3091,7 @@ xzoomabs(const Arg *arg) { | |
xunloadfonts(); | |
xloadfonts(usedfont, arg->i); | |
cresize(0, 0); | |
- redraw(0); | |
+ redraw(); | |
xhints(); | |
} | |
t@@ -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 | |
t@@ -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 | |
t@@ -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, | |
t@@ -150,6 +150,7 @@ st| simpleterm, | |
mir, | |
msgr, | |
ncv#3, | |
+ npc, | |
op=\E[39;49m, | |
pairs#64, | |
mc0=\E[i, |