X-Git-Url: https://git.xinqibao.xyz/dwm.git/blobdiff_plain/2c66b422e75109562e6ebfb6247300b916e1551a..57e6e3bb80b5fc4709de3f8b716a8b8065897c7a:/main.c

diff --git a/main.c b/main.c
index 16ebbae..2df9683 100644
--- a/main.c
+++ b/main.c
@@ -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);
@@ -210,6 +211,10 @@ main(int argc, char *argv[])
 	cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing);
 	cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur);
 
+	wa.event_mask = SubstructureRedirectMask | EnterWindowMask | LeaveWindowMask;
+	wa.cursor = cursor[CurNormal];
+	XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
+
 	grabkeys();
 	initrregs();
 
@@ -249,10 +254,6 @@ main(int argc, char *argv[])
 
 	issel = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask);
 
-	wa.event_mask = SubstructureRedirectMask | EnterWindowMask | LeaveWindowMask;
-	wa.cursor = cursor[CurNormal];
-	XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
-
 	scan();
 
 	/* main event loop, also reads status text from stdin */
@@ -262,20 +263,12 @@ main(int argc, char *argv[])
 		if(readin)
 			FD_SET(STDIN_FILENO, &rd);
 		FD_SET(xfd, &rd);
-
 		i = select(xfd + 1, &rd, NULL, NULL, NULL);
 		if(i == -1 && errno == EINTR)
 			continue;
 		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 +277,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);