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.
This commit is contained in:
		
				
					committed by
					
						 Roberto E. Vargas Caballero
						Roberto E. Vargas Caballero
					
				
			
			
				
	
			
			
			
						parent
						
							3604445ffc
						
					
				
				
					commit
					1b514048b2
				
			
							
								
								
									
										21
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user