applied Brandon MacDone's static initialization patch for seltags and Client->tags

This commit is contained in:
Anselm R. Garbe 2007-10-06 19:43:15 +02:00
parent 883e09b2eb
commit eeea4ef583

44
dwm.c
View file

@ -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);