| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -48,7 +48,7 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#define ESC_ARG_SIZ   16 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#define STR_BUF_SIZ   256 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#define STR_ARG_SIZ   16 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#define DRAW_BUF_SIZ  1024 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#define DRAW_BUF_SIZ  20*1024 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#define UTF_SIZ       4 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#define XK_NO_MOD     UINT_MAX | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#define XK_ANY_MOD    0 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -2329,7 +2329,8 @@ void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					run(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XEvent ev; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						fd_set rfd; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int xfd = XConnectionNumber(xw.dpy); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int xfd = XConnectionNumber(xw.dpy), i; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						struct timeval drawtimeout; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						for(;;) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							FD_ZERO(&rfd); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -2340,9 +2341,29 @@ run(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									continue; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								die("select failed: %s\n", SERRNO); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(FD_ISSET(cmdfd, &rfd)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							/* | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							 * Stop after a certain number of reads so the user does not | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							 * feel like the system is stuttering. | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							for(i = 0; i < 1000 && FD_ISSET(cmdfd, &rfd); i++) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								ttyread(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								FD_ZERO(&rfd); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								FD_SET(cmdfd, &rfd); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								/* | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								 * Just wait a bit so it isn't disturbing the | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								 * user and the system is able to write something. | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								drawtimeout.tv_sec = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								drawtimeout.tv_usec = 5; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if(select(cmdfd+1, &rfd, NULL, NULL, &drawtimeout) < 0) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									if(errno == EINTR) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										continue; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									die("select failed: %s\n", SERRNO); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							while(XPending(xw.dpy)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								XNextEvent(xw.dpy, &ev); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if(XFilterEvent(&ev, xw.win)) | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |