main.c
changeset 302 3b11e32e8d7e
parent 295 7565875d07d3
child 309 204427dcc087
equal deleted inserted replaced
301:87d1c9978ed2 302:3b11e32e8d7e
    16 #include <X11/Xproto.h>
    16 #include <X11/Xproto.h>
    17 
    17 
    18 /* static */
    18 /* static */
    19 
    19 
    20 static int (*xerrorxlib)(Display *, XErrorEvent *);
    20 static int (*xerrorxlib)(Display *, XErrorEvent *);
    21 static Bool otherwm;
    21 static Bool otherwm, readin;
    22 
    22 
    23 static void
    23 static void
    24 cleanup()
    24 cleanup()
    25 {
    25 {
       
    26 	close(STDIN_FILENO);
    26 	while(sel) {
    27 	while(sel) {
    27 		resize(sel, True, TopLeft);
    28 		resize(sel, True, TopLeft);
    28 		unmanage(sel);
    29 		unmanage(sel);
    29 	}
    30 	}
    30 	if(dc.font.set)
    31 	if(dc.font.set)
   144 }
   145 }
   145 
   146 
   146 void
   147 void
   147 quit(Arg *arg)
   148 quit(Arg *arg)
   148 {
   149 {
   149 	running = False;
   150 	readin = running = False;
   150 }
   151 }
   151 
   152 
   152 /*
   153 /*
   153  * There's no way to check accesses to destroyed windows, thus those cases are
   154  * There's no way to check accesses to destroyed windows, thus those cases are
   154  * ignored (especially on UnmapNotify's).  Other types of errors call Xlibs
   155  * ignored (especially on UnmapNotify's).  Other types of errors call Xlibs
   174 main(int argc, char *argv[])
   175 main(int argc, char *argv[])
   175 {
   176 {
   176 	int i, j, xfd;
   177 	int i, j, xfd;
   177 	unsigned int mask;
   178 	unsigned int mask;
   178 	fd_set rd;
   179 	fd_set rd;
   179 	Bool readin = True;
       
   180 	Window w;
   180 	Window w;
   181 	XModifierKeymap *modmap;
   181 	XModifierKeymap *modmap;
   182 	XSetWindowAttributes wa;
   182 	XSetWindowAttributes wa;
   183 
   183 
   184 	if(argc == 2 && !strncmp("-v", argv[1], 3)) {
   184 	if(argc == 2 && !strncmp("-v", argv[1], 3)) {
   277 	scan();
   277 	scan();
   278 
   278 
   279 	/* main event loop, also reads status text from stdin */
   279 	/* main event loop, also reads status text from stdin */
   280 	XSync(dpy, False);
   280 	XSync(dpy, False);
   281 	procevent();
   281 	procevent();
       
   282 	readin = True;
   282 	while(running) {
   283 	while(running) {
   283 		FD_ZERO(&rd);
   284 		FD_ZERO(&rd);
   284 		if(readin)
   285 		if(readin)
   285 			FD_SET(STDIN_FILENO, &rd);
   286 			FD_SET(STDIN_FILENO, &rd);
   286 		FD_SET(xfd, &rd);
   287 		FD_SET(xfd, &rd);