diff options
| -rw-r--r-- | event.c | 6 | ||||
| -rw-r--r-- | main.c | 16 | 
2 files changed, 12 insertions, 10 deletions
| @@ -254,13 +254,15 @@ keypress(XEvent *e)  	XKeyEvent *ev = &e->xkey;  	keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0); -	for(i = 0; i < len; i++) +	for(i = 0; i < len; i++) {  		if(keysym == key[i].keysym && -				CLEANMASK(key[i].mod) == CLEANMASK(ev->state)) { +				CLEANMASK(key[i].mod) == CLEANMASK(ev->state)) +		{  			if(key[i].func)  				key[i].func(&key[i].arg);  			return;  		} +	}  }  static void @@ -196,6 +196,7 @@ main(int argc, char *argv[])  	XSetErrorHandler(NULL);  	xerrorxlib = XSetErrorHandler(xerror); +	XSync(dpy, False);  	/* init atoms */  	wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False); @@ -269,13 +270,6 @@ main(int argc, char *argv[])  		if(i < 0)  			eprint("select failed\n");  		else if(i > 0) { -			if(FD_ISSET(xfd, &rd)) { -				while(XPending(dpy)) { -					XNextEvent(dpy, &ev); -					if(handler[ev.type]) -						(handler[ev.type])(&ev); /* call handler */ -				} -			}  			if(readin && FD_ISSET(STDIN_FILENO, &rd)) {  				readin = NULL != fgets(stext, sizeof(stext), stdin);  				if(readin) @@ -284,9 +278,15 @@ main(int argc, char *argv[])  					strcpy(stext, "broken pipe");  				drawstatus();  			} +			if(FD_ISSET(xfd, &rd)) { +				while(XPending(dpy)) { +					XNextEvent(dpy, &ev); +					if(handler[ev.type]) +						(handler[ev.type])(&ev); /* call handler */ +				} +			}  		}  	} -  	cleanup();  	XCloseDisplay(dpy); | 
