@ -76,7 +76,7 @@ char *argv0;  
														
													
														
															
																# define LIMIT(x, a, b)    (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x) # define LIMIT(x, a, b)    (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x)  
														
													
														
															
																# define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || (a).bg != (b).bg) # define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || (a).bg != (b).bg)  
														
													
														
															
																# define IS_SET(flag) ((term.mode & (flag)) != 0) # define IS_SET(flag) ((term.mode & (flag)) != 0)  
														
													
														
															
																# define TIMEDIFF(t1, t2) ((t1.tv_sec-t2.tv_sec)*1000 + (t1.tv_usec-t2.tv_usec) / 1000 )  
														
													
														
															
																# define TIMEDIFF(t1, t2) ((t1.tv_sec-t2.tv_sec)*1000 + (t1.tv_nsec-t2.tv_nsec) / 10E6 )  
														
													
														
															
																# define CEIL(x) (((x) != (int) (x)) ? (x) + 1 : (x)) # define CEIL(x) (((x) != (int) (x)) ? (x) + 1 : (x))  
														
													
														
															
																# define MODBIT(x, set, bit) ((set) ? ((x) |= (bit)) : ((x) &= ~(bit))) # define MODBIT(x, set, bit) ((set) ? ((x) |= (bit)) : ((x) &= ~(bit)))  
														
													
														
															
																
 
  
														
													
												
													
														
															
																
																	
																		
																			 
																	
																	
																		
																			 
																	
																	
																 
																@ -294,8 +294,8 @@ typedef struct {  
														
													
														
															
																	char  * clip ;  	char  * clip ;   
														
													
														
															
																	Atom  xtarget ;  	Atom  xtarget ;   
														
													
														
															
																	bool  alt ;  	bool  alt ;   
														
													
														
															
																	struct  timeval   tclick1 ;   
														
													
														
															
																	struct  timeval   tclick2 ;   
														
													
														
															
																	struct  timespec   tclick1 ;   
														
													
														
															
																	struct  timespec   tclick2 ;   
														
													
														
															
																}  Selection ; }  Selection ;  
														
													
														
															
																
 
  
														
													
														
															
																typedef  union  { typedef  union  {  
														
													
												
													
														
															
																
																	
																		
																			 
																	
																	
																		
																			 
																	
																	
																 
																@ -860,7 +860,7 @@ mousereport(XEvent *e) {  
														
													
														
															
																
 
  
														
													
														
															
																void void  
														
													
														
															
																bpress ( XEvent  * e )  { bpress ( XEvent  * e )  {  
														
													
														
															
																	struct  timeval   now ;   
														
													
														
															
																	struct  timespec   now ;   
														
													
														
															
																	Mousekey  * mk ;  	Mousekey  * mk ;   
														
													
														
															
																
 
  
														
													
														
															
																	if ( IS_SET ( MODE_MOUSE )  & &  ! ( e - > xbutton . state  &  forceselmod ) )  {  	if ( IS_SET ( MODE_MOUSE )  & &  ! ( e - > xbutton . state  &  forceselmod ) )  {   
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																	
																 
																@ -877,7 +877,7 @@ bpress(XEvent *e) {  
														
													
														
															
																	}  	}   
														
													
														
															
																
 
  
														
													
														
															
																	if ( e - > xbutton . button  = =  Button1 )  {  	if ( e - > xbutton . button  = =  Button1 )  {   
														
													
														
															
																		gettimeofday ( & now ,  NULL ) ;   
														
													
														
															
																		clock_gettime ( CLOCK_MONOTONIC ,  & now ) ;   
														
													
														
															
																
 
  
														
													
														
															
																		/* Clear previous selection, logically and visually. */  		/* Clear previous selection, logically and visually. */   
														
													
														
															
																		selclear ( NULL ) ;  		selclear ( NULL ) ;   
														
													
												
													
														
															
																
																	
																		
																			 
																	
																	
																		
																			 
																	
																	
																 
																@ -3709,7 +3709,8 @@ run(void) {  
														
													
														
															
																	int  w  =  xw . w ,  h  =  xw . h ;  	int  w  =  xw . w ,  h  =  xw . h ;   
														
													
														
															
																	fd_set  rfd ;  	fd_set  rfd ;   
														
													
														
															
																	int  xfd  =  XConnectionNumber ( xw . dpy ) ,  xev ,  blinkset  =  0 ,  dodraw  =  0 ;  	int  xfd  =  XConnectionNumber ( xw . dpy ) ,  xev ,  blinkset  =  0 ,  dodraw  =  0 ;   
														
													
														
															
																	struct  timeval  drawtimeout ,  * tv  =  NULL ,  now ,  last ,  lastblink ;   
														
													
														
															
																	struct  timespec  drawtimeout ,  * tv  =  NULL ,  now ,  last ,  lastblink ;   
														
													
														
															
																	long  deltatime ;   
														
													
														
															
																
 
  
														
													
														
															
																	/* Waiting for window mapping */  	/* Waiting for window mapping */   
														
													
														
															
																	while ( 1 )  {  	while ( 1 )  {   
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																	
																 
																@ -3725,17 +3726,15 @@ run(void) {  
														
													
														
															
																	ttynew ( ) ;  	ttynew ( ) ;   
														
													
														
															
																	cresize ( w ,  h ) ;  	cresize ( w ,  h ) ;   
														
													
														
															
																
 
  
														
													
														
															
																	gettimeofday ( & last ,  NULL ) ;   
														
													
														
															
																	clock_gettime ( CLOCK_MONOTONIC ,  & last ) ;   
														
													
														
															
																	lastblink  =  last ;  	lastblink  =  last ;   
														
													
														
															
																
 
  
														
													
														
															
																	for ( xev  =  actionfps ; ; )  {  	for ( xev  =  actionfps ; ; )  {   
														
													
														
															
																		long  deltatime ;   
														
													
														
															
																
  
														
													
														
															
																		FD_ZERO ( & rfd ) ;  		FD_ZERO ( & rfd ) ;   
														
													
														
															
																		FD_SET ( cmdfd ,  & rfd ) ;  		FD_SET ( cmdfd ,  & rfd ) ;   
														
													
														
															
																		FD_SET ( xfd ,  & rfd ) ;  		FD_SET ( xfd ,  & rfd ) ;   
														
													
														
															
																
 
  
														
													
														
															
																		if ( select ( MAX ( xfd ,  cmdfd ) + 1 ,  & rfd ,  NULL ,  NULL ,  tv )  <  0 )  {   
														
													
														
															
																		if ( p select( MAX ( xfd ,  cmdfd ) + 1 ,  & rfd ,  NULL ,  NULL ,  tv ,  NULL )  <  0 )  {   
														
													
														
															
																			if ( errno  = =  EINTR )  			if ( errno  = =  EINTR )   
														
													
														
															
																				continue ;  				continue ;   
														
													
														
															
																			die ( " select failed: %s \n " ,  strerror ( errno ) ) ;  			die ( " select failed: %s \n " ,  strerror ( errno ) ) ;   
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																	
																 
																@ -3752,9 +3751,9 @@ run(void) {  
														
													
														
															
																		if ( FD_ISSET ( xfd ,  & rfd ) )  		if ( FD_ISSET ( xfd ,  & rfd ) )   
														
													
														
															
																			xev  =  actionfps ;  			xev  =  actionfps ;   
														
													
														
															
																
 
  
														
													
														
															
																		gettimeofday ( & now ,  NULL ) ;   
														
													
														
															
																		clock_gettime ( CLOCK_MONOTONIC ,  & now ) ;   
														
													
														
															
																		drawtimeout . tv_sec  =  0 ;  		drawtimeout . tv_sec  =  0 ;   
														
													
														
															
																		drawtimeout . tv_u sec  =  ( 1000 / xfps )  *  1000 ;   
														
													
														
															
																		drawtimeout . tv_n sec  =  ( 1000 / xfps )  *  10E6 ;   
														
													
														
															
																		tv  =  & drawtimeout ;  		tv  =  & drawtimeout ;   
														
													
														
															
																
 
  
														
													
														
															
																		dodraw  =  0 ;  		dodraw  =  0 ;   
														
													
												
													
														
															
																
																	
																		
																			 
																	
																	
																		
																			 
																	
																	
																 
																@ -3789,9 +3788,9 @@ run(void) {  
														
													
														
															
																				if ( blinkset )  {  				if ( blinkset )  {   
														
													
														
															
																					if ( TIMEDIFF ( now ,  lastblink )  \  					if ( TIMEDIFF ( now ,  lastblink )  \   
														
													
														
															
																							>  blinktimeout )  {  							>  blinktimeout )  {   
														
													
														
															
																						drawtimeout . tv_u sec  =  1 ;   
														
													
														
															
																						drawtimeout . tv_n sec  =  1000  ;   
														
													
														
															
																					}  else  {  					}  else  {   
														
													
														
															
																						drawtimeout . tv_usec  =  ( 1000   *  \   
														
													
														
															
																						drawtimeout . tv_nsec  =  ( 10E6   *  \   
														
													
														
															
																							( blinktimeout  -  \  							( blinktimeout  -  \   
														
													
														
															
																							TIMEDIFF ( now ,  							TIMEDIFF ( now ,   
														
													
														
															
																								lastblink ) ) ) ;  								lastblink ) ) ) ;