JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
core dump fix in cleanup
[dwm.git] / dwm.c
diff --git a/dwm.c b/dwm.c
index 3147be2..4847a88 100644 (file)
--- a/dwm.c
+++ b/dwm.c
@@ -16,8 +16,8 @@
  * Each child of the root window is called a client, except windows which have
  * set the override_redirect flag.  Clients are organized in a global
  * doubly-linked client list, the focus history is remembered through a global
- * stack list. Each client contains an array of Bools of the same size as the
- * global tags array to indicate the tags of a client.
+ * stack list. Each client contains a bit array to indicate the tags of a
+ * client.
  *
  * Keys and tagging rules are organized as arrays and defined in config.h.
  *
@@ -193,7 +193,7 @@ void zoom(const void *arg);
 /* variables */
 char stext[256];
 int screen, sx, sy, sw, sh;
-int bx, by, bw, bh, blw, wx, wy, ww, wh;
+int by, bh, blw, wx, wy, ww, wh;
 uint seltags = 0;
 int (*xerrorxlib)(Display *, XErrorEvent *);
 uint numlockmask = 0;
@@ -349,7 +349,6 @@ checkotherwm(void) {
        XSync(dpy, False);
        if(otherwm)
                eprint("dwm: another window manager is already running\n");
-       XSync(dpy, False);
        XSetErrorHandler(NULL);
        xerrorxlib = XSetErrorHandler(xerror);
        XSync(dpy, False);
@@ -358,7 +357,7 @@ checkotherwm(void) {
 void
 cleanup(void) {
        close(STDIN_FILENO);
-       view(NULL);
+       view((uint[]){~0});
        while(stack)
                unmanage(stack);
        if(dc.font.set)
@@ -506,10 +505,10 @@ drawbar(void) {
        else
                x = dc.x;
        dc.w = TEXTW(stext);
-       dc.x = bw - dc.w;
+       dc.x = ww - dc.w;
        if(dc.x < x) {
                dc.x = x;
-               dc.w = bw - x;
+               dc.w = ww - x;
        }
        drawtext(stext, dc.norm, False);
        if((dc.w = dc.x - x) > bh) {
@@ -521,7 +520,7 @@ drawbar(void) {
                else
                        drawtext(NULL, dc.norm, False);
        }
-       XCopyArea(dpy, dc.drawable, barwin, dc.gc, 0, 0, bw, bh, 0, 0);
+       XCopyArea(dpy, dc.drawable, barwin, dc.gc, 0, 0, ww, bh, 0, 0);
        XSync(dpy, False);
 }
 
@@ -875,11 +874,9 @@ keypress(XEvent *e) {
        keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
        for(i = 0; i < LENGTH(keys); i++)
                if(keysym == keys[i].keysym
-               && CLEANMASK(keys[i].mod) == CLEANMASK(ev->state))
-               {
-                       if(keys[i].func)
-                               keys[i].func(keys[i].arg);
-               }
+                  && CLEANMASK(keys[i].mod) == CLEANMASK(ev->state)
+                  && keys[i].func)
+                       keys[i].func(keys[i].arg);
 }
 
 void
@@ -1372,7 +1369,7 @@ setup(void) {
        wa.background_pixmap = ParentRelative;
        wa.event_mask = ButtonPressMask|ExposureMask;
 
-       barwin = XCreateWindow(dpy, root, bx, by, bw, bh, 0, DefaultDepth(dpy, screen),
+       barwin = XCreateWindow(dpy, root, wx, by, ww, bh, 0, DefaultDepth(dpy, screen),
                        CopyFromParent, DefaultVisual(dpy, screen),
                        CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);
        XDefineCursor(dpy, barwin, cursor[CurNormal]);
@@ -1567,8 +1564,8 @@ void
 updatebar(void) {
        if(dc.drawable != 0)
                XFreePixmap(dpy, dc.drawable);
-       dc.drawable = XCreatePixmap(dpy, root, bw, bh, DefaultDepth(dpy, screen));
-       XMoveResizeWindow(dpy, barwin, bx, by, bw, bh);
+       dc.drawable = XCreatePixmap(dpy, root, ww, bh, DefaultDepth(dpy, screen));
+       XMoveResizeWindow(dpy, barwin, wx, by, ww, bh);
 }
 
 void
@@ -1595,10 +1592,8 @@ updategeom(void) {
                wh = showbar ? sh - bh : sh;
        }
 
-       /* bar geometry */
-       bx = wx;
+       /* bar position */
        by = showbar ? (topbar ? wy - bh : wy + wh) : -bh;
-       bw = ww;
 }
 
 void