unsigned char *get_win_name(xcb_window_t);
xcb_atom_t get_atom_from_string(const char *);
void map_window_raised(xcb_window_t);
+void do_sync(void);
void
+do_sync(void)
+{
+ xcb_get_input_focus_cookie_t c;
+ xcb_get_input_focus_reply_t *r;
+
+ /* mimic XSync() */
+ c = xcb_get_input_focus(conn);
+ xcb_flush(conn);
+ r = xcb_get_input_focus_reply(conn, c, NULL);
+ if (r)
+ free(r);
+}
+
+void
map_window_raised(xcb_window_t win)
{
uint32_t val = XCB_STACK_MODE_ABOVE;
struct ws_win *win;
uint16_t state;
xcb_get_window_attributes_cookie_t c;
- xcb_get_window_attributes_reply_t *r;
+ xcb_get_window_attributes_reply_t *wa;
if (r->ws == NULL) {
warnx("dumpwins: invalid workspace");
TAILQ_FOREACH(win, &r->ws->winlist, entry) {
state = getstate(win->id);
c = xcb_get_window_attributes(conn, win->id);
- r = xcb_get_window_attributes_reply(conn, c, NULL);
- if (r) {
+ wa = xcb_get_window_attributes_reply(conn, c, NULL);
+ if (wa) {
warnx("window: 0x%x, map_state: %d, state: %u, "
- "transient: 0x%x", win->id, wa.map_state,
+ "transient: 0x%x", win->id, wa->map_state,
state, win->transient);
- free(r);
+ free(wa);
} else
warnx("window: 0x%x, failed xcb_get_window_attributes",
win->id);
TAILQ_FOREACH(win, &r->ws->unmanagedlist, entry) {
state = getstate(win->id);
c = xcb_get_window_attributes(conn, win->id);
- r xcb_get_window_attributes_reply(conn, c, NULL);
- if (r) {
+ wa = xcb_get_window_attributes_reply(conn, c, NULL);
+ if (wa) {
warnx("window: 0x%lx, map_state: %d, state: %u, "
- "transient: 0x%lx", win->id, wa.map_state,
+ "transient: 0x%lx", win->id, wa->map_state,
state, win->transient);
- free(r);
+ free(wa);
} else
- warnx("window: 0x%lx, failed XGetWindowAttributes",
+ warnx("window: 0x%x, failed xcb_get_window_attributes",
win->id);
}
/* not free, don't sync more than 120 times / second */
if ((ev.xmotion.time - time) > (1000 / 120) ) {
time = ev.xmotion.time;
- XSync(display, False);
+ do_sync();
update_window(win);
}
break;
}
} while (ev.type != ButtonRelease);
if (time) {
- XSync(display, False);
+ do_sync();
update_window(win);
}
store_float_geom(win,r);
/* not free, don't sync more than 120 times / second */
if ((ev.xmotion.time - time) > (1000 / 120) ) {
time = ev.xmotion.time;
- XSync(display, False);
+ do_sync();
update_window(win);
}
break;
}
} while (ev.type != ButtonRelease);
if (time) {
- XSync(display, False);
+ do_sync();
update_window(win);
}
store_float_geom(win, r);
/* this causes an error if some other window manager is running */
XSelectInput(display, DefaultRootWindow(display),
SubstructureRedirectMask);
- XSync(display, False);
+ do_sync();
if (other_wm)
return (1);
XSetErrorHandler(xerror);
- XSync(display, False);
+ do_sync();
return (0);
}