| 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, |