X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=spectrwm.c;h=ef20ce07bc6d93cd1a89fd811f1c45e8897b7e2f;hb=a261181f039ffb676413787097afee615f371099;hp=530c942d2b51ce33bcd375ff080598fb0fbf5862;hpb=bef91830c7f283f5b49d08c8c9282e9c2988936e;p=spectrwm.git diff --git a/spectrwm.c b/spectrwm.c index 530c942..ef20ce0 100644 --- a/spectrwm.c +++ b/spectrwm.c @@ -637,6 +637,7 @@ map_window_raised(xcb_window_t win) XCB_CONFIG_WINDOW_STACK_MODE, &val); xcb_map_window(conn, win); + xcb_flush(conn); } xcb_atom_t @@ -1122,9 +1123,10 @@ xrandr_geteventname(XEvent *e) void dumpwins(struct swm_region *r, union arg *args) { - struct ws_win *win; - uint16_t state; - XWindowAttributes wa; + struct ws_win *win; + uint16_t state; + xcb_get_window_attributes_cookie_t c; + xcb_get_window_attributes_reply_t *r; if (r->ws == NULL) { warnx("dumpwins: invalid workspace"); @@ -1132,26 +1134,33 @@ dumpwins(struct swm_region *r, union arg *args) } warnx("=== managed window list ws %02d ===", r->ws->idx); - TAILQ_FOREACH(win, &r->ws->winlist, entry) { state = getstate(win->id); - if (!XGetWindowAttributes(display, win->id, &wa)) - warnx("window: 0x%lx, failed XGetWindowAttributes", + c = xcb_get_window_attributes(conn, win->id); + r = xcb_get_window_attributes_reply(conn, c, NULL); + if (r) { + warnx("window: 0x%x, map_state: %d, state: %u, " + "transient: 0x%x", win->id, wa.map_state, + state, win->transient); + free(r); + } else + warnx("window: 0x%x, failed xcb_get_window_attributes", win->id); - warnx("window: 0x%lx, map_state: %d, state: %u, " - "transient: 0x%lx", win->id, wa.map_state, state, - win->transient); } warnx("===== unmanaged window list ====="); TAILQ_FOREACH(win, &r->ws->unmanagedlist, entry) { state = getstate(win->id); - if (!XGetWindowAttributes(display, win->id, &wa)) + c = xcb_get_window_attributes(conn, win->id); + r xcb_get_window_attributes_reply(conn, c, NULL); + if (r) { + warnx("window: 0x%lx, map_state: %d, state: %u, " + "transient: 0x%lx", win->id, wa.map_state, + state, win->transient); + free(r); + } else warnx("window: 0x%lx, failed XGetWindowAttributes", win->id); - warnx("window: 0x%lx, map_state: %d, state: %u, " - "transient: 0x%lx", win->id, wa.map_state, state, - win->transient); } warnx("================================="); @@ -7425,10 +7434,9 @@ void setup_screens(void) { int i, j, k, num_screens; - int errorbase; struct workspace *ws; XGCValues gcv; - + const xcb_query_extension_reply_t *qep; xcb_randr_query_version_cookie_t c; xcb_randr_query_version_reply_t *r; @@ -7439,18 +7447,16 @@ setup_screens(void) "screens"); /* initial Xrandr setup */ - xrandr_support = XRRQueryExtension(display, - &xrandr_eventbase, &errorbase); - if (xrandr_support) { - c = xcb_randr_query_version(conn, True, False); - r = xcb_randr_query_version_reply(conn, c, NULL); - if (r) { - if (r->major_version < 1) - xrandr_support = 0; - free(r); - } else - xrandr_support = 0; + xrandr_support = False; + c = xcb_randr_query_version(conn, True, True); + r = xcb_randr_query_version_reply(conn, c, NULL); + if (r) { + if (r->major_version >= 1) + xrandr_support = True; + free(r); } + qep = xcb_get_extension_data(conn, &xcb_randr_id); + xrandr_eventbase = qep->first_event; /* map physical screens */ for (i = 0; i < num_screens; i++) { @@ -7555,7 +7561,6 @@ main(int argc, char *argv[]) int xfd, i, num_screens; fd_set rd; struct sigaction sact; - xcb_generic_event_t *evt; start_argv = argv; warnx("Welcome to spectrwm V%s Build: %s", SPECTRWM_VERSION, buildstr); @@ -7677,7 +7682,7 @@ noconfig: xfd = xcb_get_file_descriptor(conn); while (running) { - while ((evt = xcb_poll_for_event(conn)) == 0) { + while (XPending(display)) { XNextEvent(display, &e); if (running == 0) goto done;