main.c
changeset 275 425cd4490c1e
parent 274 97e8cb712fd9
child 278 c1187ddcd7f7
equal deleted inserted replaced
274:97e8cb712fd9 275:425cd4490c1e
   194 	if(otherwm)
   194 	if(otherwm)
   195 		eprint("dwm: another window manager is already running\n");
   195 		eprint("dwm: another window manager is already running\n");
   196 
   196 
   197 	XSetErrorHandler(NULL);
   197 	XSetErrorHandler(NULL);
   198 	xerrorxlib = XSetErrorHandler(xerror);
   198 	xerrorxlib = XSetErrorHandler(xerror);
       
   199 	XSync(dpy, False);
   199 
   200 
   200 	/* init atoms */
   201 	/* init atoms */
   201 	wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
   202 	wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
   202 	wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
   203 	wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
   203 	netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
   204 	netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
   267 		if(i == -1 && errno == EINTR)
   268 		if(i == -1 && errno == EINTR)
   268 			continue;
   269 			continue;
   269 		if(i < 0)
   270 		if(i < 0)
   270 			eprint("select failed\n");
   271 			eprint("select failed\n");
   271 		else if(i > 0) {
   272 		else if(i > 0) {
   272 			if(FD_ISSET(xfd, &rd)) {
       
   273 				while(XPending(dpy)) {
       
   274 					XNextEvent(dpy, &ev);
       
   275 					if(handler[ev.type])
       
   276 						(handler[ev.type])(&ev); /* call handler */
       
   277 				}
       
   278 			}
       
   279 			if(readin && FD_ISSET(STDIN_FILENO, &rd)) {
   273 			if(readin && FD_ISSET(STDIN_FILENO, &rd)) {
   280 				readin = NULL != fgets(stext, sizeof(stext), stdin);
   274 				readin = NULL != fgets(stext, sizeof(stext), stdin);
   281 				if(readin)
   275 				if(readin)
   282 					stext[strlen(stext) - 1] = 0;
   276 					stext[strlen(stext) - 1] = 0;
   283 				else 
   277 				else 
   284 					strcpy(stext, "broken pipe");
   278 					strcpy(stext, "broken pipe");
   285 				drawstatus();
   279 				drawstatus();
   286 			}
   280 			}
       
   281 			if(FD_ISSET(xfd, &rd)) {
       
   282 				while(XPending(dpy)) {
       
   283 					XNextEvent(dpy, &ev);
       
   284 					if(handler[ev.type])
       
   285 						(handler[ev.type])(&ev); /* call handler */
       
   286 				}
       
   287 			}
   287 		}
   288 		}
   288 	}
   289 	}
   289 
       
   290 	cleanup();
   290 	cleanup();
   291 	XCloseDisplay(dpy);
   291 	XCloseDisplay(dpy);
   292 
   292 
   293 	return 0;
   293 	return 0;
   294 }
   294 }