applied Brandon MacDone's static initialization patch for seltags and Client->tags
This commit is contained in:
		
							parent
							
								
									883e09b2eb
								
							
						
					
					
						commit
						eeea4ef583
					
				
							
								
								
									
										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);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue