attempt to grab the keyboard only 1000 times, not forever.
This commit is contained in:
		
							parent
							
								
									73120414e2
								
							
						
					
					
						commit
						f555908cef
					
				| @ -1,5 +1,5 @@ | |||||||
| # dmenu version
 | # dmenu version
 | ||||||
| VERSION = 2.7 | VERSION = 2.8 | ||||||
| 
 | 
 | ||||||
| # Customize below to fit your system
 | # Customize below to fit your system
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										16
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								main.c
									
									
									
									
									
								
							| @ -108,11 +108,17 @@ drawmenu(void) { | |||||||
| 	XFlush(dpy); | 	XFlush(dpy); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void | static Bool | ||||||
| grabkeyboard(void) { | grabkeyboard(void) { | ||||||
| 	while(XGrabKeyboard(dpy, root, True, GrabModeAsync, | 	unsigned int len; | ||||||
| 			 GrabModeAsync, CurrentTime) != GrabSuccess) | 
 | ||||||
|  | 	for(len = 1000; len; len--) { | ||||||
|  | 		if(XGrabKeyboard(dpy, root, True, GrabModeAsync, GrabModeAsync, CurrentTime) | ||||||
|  | 			== GrabSuccess) | ||||||
|  | 			break; | ||||||
| 		usleep(1000); | 		usleep(1000); | ||||||
|  | 	} | ||||||
|  | 	return len > 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static unsigned long | static unsigned long | ||||||
| @ -456,10 +462,10 @@ main(int argc, char *argv[]) { | |||||||
| 	root = RootWindow(dpy, screen); | 	root = RootWindow(dpy, screen); | ||||||
| 	if(isatty(STDIN_FILENO)) { | 	if(isatty(STDIN_FILENO)) { | ||||||
| 		maxname = readstdin(); | 		maxname = readstdin(); | ||||||
| 		grabkeyboard(); | 		running = grabkeyboard(); | ||||||
| 	} | 	} | ||||||
| 	else { /* prevent keypress loss */ | 	else { /* prevent keypress loss */ | ||||||
| 		grabkeyboard(); | 		running = grabkeyboard(); | ||||||
| 		maxname = readstdin(); | 		maxname = readstdin(); | ||||||
| 	} | 	} | ||||||
| 	/* init modifier map */ | 	/* init modifier map */ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user