Xinqi Bao's Git
projects
/
st.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
Force redisplay of all lines in DECSCNM
[st.git]
/
st.c
diff --git
a/st.c
b/st.c
index
fde0493
..
193db5e
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-54,6
+54,7
@@
#define SELECT_TIMEOUT (20*1000) /* 20 ms */
#define DRAW_TIMEOUT (20*1000) /* 20 ms */
#define SELECT_TIMEOUT (20*1000) /* 20 ms */
#define DRAW_TIMEOUT (20*1000) /* 20 ms */
+#define REDRAW_TIMEOUT (80*1000) /* 80 ms */
#define SERRNO strerror(errno)
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#define SERRNO strerror(errno)
#define MIN(a, b) ((a) < (b) ? (a) : (b))
@@
-238,6
+239,7
@@
typedef struct {
static void die(const char*, ...);
static void draw(void);
static void die(const char*, ...);
static void draw(void);
+static void redraw(void);
static void drawregion(int, int, int, int);
static void execsh(void);
static void sigchld(int);
static void drawregion(int, int, int, int);
static void execsh(void);
static void sigchld(int);
@@
-1206,7
+1208,7
@@
tsetmode(bool priv, bool set, int *args, int narg) {
mode = term.mode;
MODBIT(term.mode,set, MODE_REVERSE);
if (mode != term.mode)
mode = term.mode;
MODBIT(term.mode,set, MODE_REVERSE);
if (mode != term.mode)
- draw();
+
re
draw();
break;
case 7:
MODBIT(term.mode, set, MODE_WRAP);
break;
case 7:
MODBIT(term.mode, set, MODE_WRAP);
@@
-2029,6
+2031,14
@@
xdrawcursor(void) {
xcopy(term.c.x, term.c.y, 1, 1);
}
xcopy(term.c.x, term.c.y, 1, 1);
}
+void
+redraw(void) {
+ struct timespec tv = {0, REDRAW_TIMEOUT * 1000};
+ tfulldirt();
+ draw();
+ nanosleep(&tv, NULL);
+}
+
void
draw() {
drawregion(0, 0, term.col, term.row);
void
draw() {
drawregion(0, 0, term.col, term.row);