about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAnselm R. Garbe <garbeam@gmail.com>2007-10-06 19:43:15 +0200
committerAnselm R. Garbe <garbeam@gmail.com>2007-10-06 19:43:15 +0200
commiteeea4ef583a2ca3746e987bd2ecd570fd1869c2d (patch)
tree8cd07dd4c195c9330bc35d3319ce9117a43851ab
parent883e09b2eb8b6a42289bc5a64294df4122d90e38 (diff)
downloaddwm-eeea4ef583a2ca3746e987bd2ecd570fd1869c2d.tar.gz
applied Brandon MacDone's static initialization patch for seltags and Client->tags
-rw-r--r--dwm.c44
1 files changed, 21 insertions, 23 deletions
diff --git a/dwm.c b/dwm.c
index c9495ec..9e9e748 100644
--- a/dwm.c
+++ b/dwm.c
@@ -57,21 +57,6 @@ enum { WMProtocols, WMDelete, WMName, WMState, WMLast };/* default atoms */
 
 /* typedefs */
 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 {
 	int x, y, w, h;
@@ -195,7 +180,7 @@ char stext[256];
 double mwfact;
 int screen, sx, sy, sw, sh, wax, way, waw, wah;
 int (*xerrorxlib)(Display *, XErrorEvent *);
-unsigned int bh, bpos, ntags;
+unsigned int bh, bpos;
 unsigned int blw = 0;
 unsigned int ltidx = 0; /* default */
 unsigned int nlayouts = 0;
@@ -218,7 +203,6 @@ void (*handler[LASTEvent]) (XEvent *) = {
 Atom wmatom[WMLast], netatom[NetLast];
 Bool otherwm, readin;
 Bool running = True;
-Bool *seltags;
 Bool selscreen = True;
 Client *clients = NULL;
 Client *sel = NULL;
@@ -232,6 +216,26 @@ Regs *regs = NULL;
 /* configuration, allows nested code to access above variables */
 #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*/
 void
 applyrules(Client *c) {
@@ -393,7 +397,6 @@ cleanup(void) {
 	XFreeCursor(dpy, cursor[CurMove]);
 	XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
 	XSync(dpy, False);
-	free(seltags);
 }
 
 void
@@ -1006,7 +1009,6 @@ manage(Window w, XWindowAttributes *wa) {
 	XWindowChanges wc;
 
 	c = emallocz(sizeof(Client));
-	c->tags = emallocz(ntags * sizeof(Bool));
 	c->win = w;
 	c->x = wa->x;
 	c->y = wa->y;
@@ -1467,9 +1469,6 @@ setup(void) {
 
 	/* init tags */
 	compileregs();
-	ntags = sizeof tags / sizeof tags[0];
-	seltags = emallocz(sizeof(Bool) * ntags);
-	seltags[0] = True;
 
 	/* init appearance */
 	dc.norm[ColBorder] = getcolor(NORMBORDERCOLOR);
@@ -1703,7 +1702,6 @@ unmanage(Client *c) {
 		focus(NULL);
 	XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
 	setclientstate(c, WithdrawnState);
-	free(c->tags);
 	free(c);
 	XSync(dpy, False);
 	XSetErrorHandler(xerror);