XCB_CONFIG_WINDOW_STACK_MODE, &val);
xcb_map_window(conn, win);
+ xcb_flush(conn);
}
xcb_atom_t
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");
}
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("=================================");
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;
"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++) {
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);
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;