From 6c409f13a44ab631b53f469204f80270967dc55b Mon Sep 17 00:00:00 2001 From: seanpringle Date: Fri, 7 Sep 2012 21:28:52 +1000 Subject: [PATCH] remove debug code, use jump table for ClientMessage --- xoat.c | 40 +++++++++++++--------------------------- xoat.h | 5 ++--- 2 files changed, 15 insertions(+), 30 deletions(-) diff --git a/xoat.c b/xoat.c index cbe452d..04449f7 100644 --- a/xoat.c +++ b/xoat.c @@ -42,8 +42,6 @@ int execsh(char *cmd) void exec_cmd(char *cmd) { if (!cmd || !cmd[0]) return; - warnx("exec_cmd %s", cmd); - signal(SIGCHLD, catch_exit); if (fork()) return; @@ -155,8 +153,6 @@ client* window_build_client(Window win) && c->type != atoms[_NET_WM_WINDOW_TYPE_SPLASH] ? 1:0; - c->trans = c->transient_for ? 1:0; - for (i = 0; i < nmonitors; i++) if (INTERSECT(monitors[i].x, monitors[i].y, monitors[i].w, monitors[i].h, c->attr.x + c->attr.width/2, c->attr.y+c->attr.height/2, 1, 1)) @@ -354,7 +350,7 @@ void client_place_spot(client *c, int spot, int force) { if (!c) return; - if (c->trans && !force) + if (c->transient_for && !force) { client *t = window_build_client(c->transient_for); spot = t->spot; @@ -444,7 +440,7 @@ void client_raise_family(client *c) if ((o = all.clients[i]) && client_has_state(o, atoms[_NET_WM_STATE_ABOVE])) client_stack_family(o, &all, &raise); - while (c->trans) + while (c->transient_for) { client *t = window_build_client(c->transient_for); if (t) c = family.clients[family.depth++] = t; @@ -661,7 +657,7 @@ void configure_request(XEvent *ev) { XConfigureRequestEvent *e = &ev->xconfigurerequest; client *c = window_build_client(e->window); - if (c && c->manage && c->visible && !c->trans) + if (c && c->manage && c->visible && !c->transient_for) { client_update_border(c); client_place_spot(c, c->spot, 0); @@ -770,6 +766,11 @@ void button_press(XEvent *ev) XAllowEvents(display, ReplayPointer, CurrentTime); } +message messages[ATOMS] = { + [_NET_ACTIVE_WINDOW] = client_activate, + [_NET_CLOSE_WINDOW] = client_close, +}; + void client_message(XEvent *ev) { XClientMessageEvent *e = &ev->xclient; @@ -784,15 +785,8 @@ void client_message(XEvent *ev) execsh(self); } client *c = window_build_client(e->window); - if (c && c->manage) - { - warnx("client message 0x%lx 0x%08lx %s", e->message_type, (long)c->window, c->class); - if (e->message_type == atoms[_NET_ACTIVE_WINDOW]) - client_activate(c); - else - if (e->message_type == atoms[_NET_CLOSE_WINDOW]) - client_close(c); - } + if (c && c->manage && messages[e->message_type]) + messages[e->message_type](c); client_free(c); } @@ -828,7 +822,6 @@ int main(int argc, char *argv[]) if (!(display = XOpenDisplay(0))) return 1; self = argv[0]; - screen = DefaultScreenOfDisplay(display); root = DefaultRootWindow(display); xerror = XSetErrorHandler(oops); @@ -847,9 +840,8 @@ int main(int argc, char *argv[]) // default non-multi-head setup memset(monitors, 0, sizeof(monitors)); - monitors[0].w = WidthOfScreen(screen); - monitors[0].h = HeightOfScreen(screen); - warnx("screen(%d): %dx%d+%d+%d", DefaultScreen(display), monitors[0].w, monitors[0].h, monitors[0].x, monitors[0].y); + monitors[0].w = WidthOfScreen(DefaultScreenOfDisplay(display)); + monitors[0].h = HeightOfScreen(DefaultScreenOfDisplay(display)); // detect panel struts query_visible_windows(&wins); @@ -865,7 +857,6 @@ int main(int argc, char *argv[]) struts.right = MIN(MAX_STRUT, MAX(struts.right, strut.right)); struts.top = MIN(MAX_STRUT, MAX(struts.top, strut.top)); struts.bottom = MIN(MAX_STRUT, MAX(struts.bottom, strut.bottom)); - warnx("struts %ld %ld %ld %ld 0x%08lx %s", strut.left, strut.left, strut.left, strut.left, (long)c->window, c->class); } } stack_free(&inplay); @@ -881,7 +872,6 @@ int main(int argc, char *argv[]) monitors[i].y = info[i].y_org + struts.top; monitors[i].w = info[i].width; monitors[i].h = info[i].height - struts.top - struts.bottom; - warnx("monitor %d %dx%d+%d+%d", i, monitors[i].w, monitors[i].h, monitors[i].x, monitors[i].y); } XFree(info); } @@ -917,15 +907,12 @@ int main(int argc, char *argv[]) } } - // dump atoms for debug - for (i = 0; i < ATOMS; i++) warnx("atom 0x%lx %s", (long)atoms[i], atom_names[i]); - // become the window manager XSelectInput(display, root, StructureNotifyMask | SubstructureRedirectMask | SubstructureNotifyMask); // ewmh support unsigned long desktop = 0, desktops = 3, pid = getpid(), viewport[2] = { 0, 0 }, - geometry[2] = { WidthOfScreen(screen), HeightOfScreen(screen) }; + geometry[2] = { monitors[0].w, monitors[0].h }; ewmh = XCreateSimpleWindow(display, root, 0, 0, 1, 1, 0, 0, 0); @@ -967,7 +954,6 @@ int main(int argc, char *argv[]) for (i = 0; i < wins.depth; i++) { if (!(c = wins.clients[i]) || !c->manage) continue; - warnx("window 0x%08lx (%d,%d,%d) %s", (long)c->window, c->tags, c->monitor, c->spot, c->class); window_listen(c->window); client_update_border(c); diff --git a/xoat.h b/xoat.h index 60956bf..96a3dd2 100644 --- a/xoat.h +++ b/xoat.h @@ -51,8 +51,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define INTERSECT(x,y,w,h,x1,y1,w1,h1) (OVERLAP((x),(w),(x1),(w1)) && OVERLAP((y),(h),(y1),(h1))) Display *display; -Screen *screen; -int scr_id; Window root; Time latest; char *self; @@ -99,7 +97,7 @@ typedef struct { XSizeHints size; Window transient_for; Atom type, states[MAX_NET_WM_STATES+1]; - short monitor, spot, visible, trans, manage, input, urgent; + short monitor, spot, visible, manage, input, urgent; unsigned short tags; char *class; } client; @@ -191,6 +189,7 @@ enum { typedef void (*handler)(XEvent*); typedef void (*action)(void*, int, client*); +typedef void (*message)(client*); typedef struct { unsigned int mod;