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