diff options
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 16 | 
1 files changed, 11 insertions, 5 deletions
@@ -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 */  | 
