applied Brandon MacDone's static initialization patch for seltags and Client->tags
This commit is contained in:
		
							
								
								
									
										44
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								dwm.c
									
									
									
									
									
								
							| @@ -57,21 +57,6 @@ enum { WMProtocols, WMDelete, WMName, WMState, WMLast };/* default atoms */ | |||||||
|  |  | ||||||
| /* typedefs */ | /* typedefs */ | ||||||
| typedef struct Client Client; | typedef struct Client Client; | ||||||
| struct Client { |  | ||||||
| 	char name[256]; |  | ||||||
| 	int x, y, w, h; |  | ||||||
| 	int rx, ry, rw, rh; /* revert geometry */ |  | ||||||
| 	int basew, baseh, incw, inch, maxw, maxh, minw, minh; |  | ||||||
| 	int minax, maxax, minay, maxay; |  | ||||||
| 	long flags; |  | ||||||
| 	unsigned int border, oldborder; |  | ||||||
| 	Bool isbanned, isfixed, ismax, isfloating, wasfloating; |  | ||||||
| 	Bool *tags; |  | ||||||
| 	Client *next; |  | ||||||
| 	Client *prev; |  | ||||||
| 	Client *snext; |  | ||||||
| 	Window win; |  | ||||||
| }; |  | ||||||
|  |  | ||||||
| typedef struct { | typedef struct { | ||||||
| 	int x, y, w, h; | 	int x, y, w, h; | ||||||
| @@ -195,7 +180,7 @@ char stext[256]; | |||||||
| double mwfact; | double mwfact; | ||||||
| int screen, sx, sy, sw, sh, wax, way, waw, wah; | int screen, sx, sy, sw, sh, wax, way, waw, wah; | ||||||
| int (*xerrorxlib)(Display *, XErrorEvent *); | int (*xerrorxlib)(Display *, XErrorEvent *); | ||||||
| unsigned int bh, bpos, ntags; | unsigned int bh, bpos; | ||||||
| unsigned int blw = 0; | unsigned int blw = 0; | ||||||
| unsigned int ltidx = 0; /* default */ | unsigned int ltidx = 0; /* default */ | ||||||
| unsigned int nlayouts = 0; | unsigned int nlayouts = 0; | ||||||
| @@ -218,7 +203,6 @@ void (*handler[LASTEvent]) (XEvent *) = { | |||||||
| Atom wmatom[WMLast], netatom[NetLast]; | Atom wmatom[WMLast], netatom[NetLast]; | ||||||
| Bool otherwm, readin; | Bool otherwm, readin; | ||||||
| Bool running = True; | Bool running = True; | ||||||
| Bool *seltags; |  | ||||||
| Bool selscreen = True; | Bool selscreen = True; | ||||||
| Client *clients = NULL; | Client *clients = NULL; | ||||||
| Client *sel = NULL; | Client *sel = NULL; | ||||||
| @@ -232,6 +216,26 @@ Regs *regs = NULL; | |||||||
| /* configuration, allows nested code to access above variables */ | /* configuration, allows nested code to access above variables */ | ||||||
| #include "config.h" | #include "config.h" | ||||||
|  |  | ||||||
|  | /* Statically define the number of tags. */ | ||||||
|  | unsigned int ntags = sizeof tags / sizeof tags[0]; | ||||||
|  | Bool seltags[sizeof tags / sizeof tags[0]] = {[0] = True}; | ||||||
|  |  | ||||||
|  | struct Client { | ||||||
|  | 	char name[256]; | ||||||
|  | 	int x, y, w, h; | ||||||
|  | 	int rx, ry, rw, rh; /* revert geometry */ | ||||||
|  | 	int basew, baseh, incw, inch, maxw, maxh, minw, minh; | ||||||
|  | 	int minax, maxax, minay, maxay; | ||||||
|  | 	long flags; | ||||||
|  | 	unsigned int border, oldborder; | ||||||
|  | 	Bool isbanned, isfixed, ismax, isfloating, wasfloating; | ||||||
|  | 	Bool tags[sizeof tags / sizeof tags[0]]; | ||||||
|  | 	Client *next; | ||||||
|  | 	Client *prev; | ||||||
|  | 	Client *snext; | ||||||
|  | 	Window win; | ||||||
|  | }; | ||||||
|  |  | ||||||
| /* functions*/ | /* functions*/ | ||||||
| void | void | ||||||
| applyrules(Client *c) { | applyrules(Client *c) { | ||||||
| @@ -393,7 +397,6 @@ cleanup(void) { | |||||||
| 	XFreeCursor(dpy, cursor[CurMove]); | 	XFreeCursor(dpy, cursor[CurMove]); | ||||||
| 	XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime); | 	XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime); | ||||||
| 	XSync(dpy, False); | 	XSync(dpy, False); | ||||||
| 	free(seltags); |  | ||||||
| } | } | ||||||
|  |  | ||||||
| void | void | ||||||
| @@ -1006,7 +1009,6 @@ manage(Window w, XWindowAttributes *wa) { | |||||||
| 	XWindowChanges wc; | 	XWindowChanges wc; | ||||||
|  |  | ||||||
| 	c = emallocz(sizeof(Client)); | 	c = emallocz(sizeof(Client)); | ||||||
| 	c->tags = emallocz(ntags * sizeof(Bool)); |  | ||||||
| 	c->win = w; | 	c->win = w; | ||||||
| 	c->x = wa->x; | 	c->x = wa->x; | ||||||
| 	c->y = wa->y; | 	c->y = wa->y; | ||||||
| @@ -1467,9 +1469,6 @@ setup(void) { | |||||||
|  |  | ||||||
| 	/* init tags */ | 	/* init tags */ | ||||||
| 	compileregs(); | 	compileregs(); | ||||||
| 	ntags = sizeof tags / sizeof tags[0]; |  | ||||||
| 	seltags = emallocz(sizeof(Bool) * ntags); |  | ||||||
| 	seltags[0] = True; |  | ||||||
|  |  | ||||||
| 	/* init appearance */ | 	/* init appearance */ | ||||||
| 	dc.norm[ColBorder] = getcolor(NORMBORDERCOLOR); | 	dc.norm[ColBorder] = getcolor(NORMBORDERCOLOR); | ||||||
| @@ -1703,7 +1702,6 @@ unmanage(Client *c) { | |||||||
| 		focus(NULL); | 		focus(NULL); | ||||||
| 	XUngrabButton(dpy, AnyButton, AnyModifier, c->win); | 	XUngrabButton(dpy, AnyButton, AnyModifier, c->win); | ||||||
| 	setclientstate(c, WithdrawnState); | 	setclientstate(c, WithdrawnState); | ||||||
| 	free(c->tags); |  | ||||||
| 	free(c); | 	free(c); | ||||||
| 	XSync(dpy, False); | 	XSync(dpy, False); | ||||||
| 	XSetErrorHandler(xerror); | 	XSetErrorHandler(xerror); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Anselm R. Garbe
					Anselm R. Garbe