all repos — dwm @ eb756ee169ad0c94167ff41a9ab2712b348afe4f

my dwm build

made stdin reader more robust
Anselm R. Garbe garbeam@wmii.de
Fri, 14 Jul 2006 12:08:32 +0200
commit

eb756ee169ad0c94167ff41a9ab2712b348afe4f

parent

0e5c8198bc5a69e87b0114b81d6569188828edfa

2 files changed, 22 insertions(+), 9 deletions(-)

jump to
M client.cclient.c

@@ -404,8 +404,6 @@ for(l = &clients; *l; l = &(*l)->next);

c->next = *l; /* *l == nil */ *l = c; - XMapRaised(dpy, c->win); - XMapRaised(dpy, c->title); XGrabButton(dpy, Button1, Mod1Mask, c->win, False, ButtonPressMask, GrabModeAsync, GrabModeSync, None, None); XGrabButton(dpy, Button2, Mod1Mask, c->win, False, ButtonPressMask,

@@ -418,10 +416,17 @@ c->floating = trans

|| ((c->maxw == c->minw) && (c->maxh == c->minh)); arrange(NULL); - if(c->tags[tsel]) + /* mapping the window now prevents flicker */ + if(c->tags[tsel]) { + XMapRaised(dpy, c->win); + XMapRaised(dpy, c->title); focus(c); - else + } + else { ban_client(c); + XMapRaised(dpy, c->win); + XMapRaised(dpy, c->title); + } } void
M main.cmain.c

@@ -264,6 +264,10 @@ CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);

XDefineCursor(dpy, barwin, cursor[CurNormal]); XMapRaised(dpy, barwin); + dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen)); + dc.gc = XCreateGC(dpy, root, 0, 0); + draw_bar(); + issel = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask); wa.event_mask = SubstructureRedirectMask | EnterWindowMask \

@@ -272,15 +276,12 @@ wa.cursor = cursor[CurNormal];

XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa); - dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen)); - dc.gc = XCreateGC(dpy, root, 0, 0); - strcpy(stext, "dwm-"VERSION); scan_wins(); - draw_bar(); /* main event loop, reads status text from stdin as well */ while(running) { +Mainloop: FD_ZERO(&rd); FD_SET(0, &rd); FD_SET(ConnectionNumber(dpy), &rd);

@@ -298,8 +299,15 @@ (handler[ev.type])(&ev); /* call handler */

} if(FD_ISSET(0, &rd)) { i = n = 0; - while((i = getchar()) != '\n' && n < sizeof(stext) - 1) + for(;;) { + if((i = getchar()) == EOF) { + stext[0] = 0; + goto Mainloop; + } + if(i == '\n' || n >= sizeof(stext) - 1) + break; stext[n++] = i; + } stext[n] = 0; draw_bar(); }