diff --git a/src/c2.c b/src/c2.c index 331c51e..3500f7b 100644 --- a/src/c2.c +++ b/src/c2.c @@ -1370,12 +1370,12 @@ static inline void c2_match_once_leaf(session_t *ps, const struct managed_win *w int word_count = 1; if (pleaf->index < 0) { // Get length of property in 32-bit multiples - auto prop_info = x_get_prop_info(ps, wid, pleaf->tgtatom); + auto prop_info = x_get_prop_info(ps->c, wid, pleaf->tgtatom); word_count = to_int_checked((prop_info.length + 4 - 1) / 4); } - winprop_t prop = - x_get_prop_with_offset(ps, wid, pleaf->tgtatom, idx, word_count, - c2_get_atom_type(pleaf), pleaf->format); + winprop_t prop = x_get_prop_with_offset( + ps->c, wid, pleaf->tgtatom, idx, word_count, + c2_get_atom_type(pleaf), pleaf->format); ntargets = (pleaf->index < 0 ? prop.nitems : min2(prop.nitems, 1)); if (ntargets > 0) { @@ -1447,12 +1447,12 @@ static inline void c2_match_once_leaf(session_t *ps, const struct managed_win *w int word_count = 1; if (pleaf->index < 0) { // Get length of property in 32-bit multiples - auto prop_info = x_get_prop_info(ps, wid, pleaf->tgtatom); + auto prop_info = x_get_prop_info(ps->c, wid, pleaf->tgtatom); word_count = to_int_checked((prop_info.length + 4 - 1) / 4); } - winprop_t prop = - x_get_prop_with_offset(ps, wid, pleaf->tgtatom, idx, word_count, - c2_get_atom_type(pleaf), pleaf->format); + winprop_t prop = x_get_prop_with_offset( + ps->c, wid, pleaf->tgtatom, idx, word_count, + c2_get_atom_type(pleaf), pleaf->format); ntargets = (pleaf->index < 0 ? prop.nitems : min2(prop.nitems, 1)); targets = targets_free = (const char **)ccalloc(2 * ntargets, char *); diff --git a/src/win.c b/src/win.c index d4db157..887df7f 100644 --- a/src/win.c +++ b/src/win.c @@ -676,7 +676,7 @@ static inline bool win_bounding_shaped(const session_t *ps, xcb_window_t wid) { static wintype_t wid_get_prop_wintype(session_t *ps, xcb_window_t wid) { winprop_t prop = - x_get_prop(ps, wid, ps->atoms->a_NET_WM_WINDOW_TYPE, 32L, XCB_ATOM_ATOM, 32); + x_get_prop(ps->c, wid, ps->atoms->a_NET_WM_WINDOW_TYPE, 32L, XCB_ATOM_ATOM, 32); for (unsigned i = 0; i < prop.nitems; ++i) { for (wintype_t j = 1; j < NUM_WINTYPES; ++j) { @@ -697,7 +697,7 @@ wid_get_opacity_prop(session_t *ps, xcb_window_t wid, opacity_t def, opacity_t * bool ret = false; *out = def; - winprop_t prop = x_get_prop(ps, wid, ps->atoms->a_NET_WM_WINDOW_OPACITY, 1L, + winprop_t prop = x_get_prop(ps->c, wid, ps->atoms->a_NET_WM_WINDOW_OPACITY, 1L, XCB_ATOM_CARDINAL, 32); if (prop.nitems) { @@ -846,7 +846,7 @@ bool win_should_fade(session_t *ps, const struct managed_win *w) { * The property must be set on the outermost window, usually the WM frame. */ void win_update_prop_shadow_raw(session_t *ps, struct managed_win *w) { - winprop_t prop = x_get_prop(ps, w->base.id, ps->atoms->a_COMPTON_SHADOW, 1, + winprop_t prop = x_get_prop(ps->c, w->base.id, ps->atoms->a_COMPTON_SHADOW, 1, XCB_ATOM_CARDINAL, 32); if (!prop.nitems) { @@ -1910,7 +1910,7 @@ void win_update_opacity_prop(session_t *ps, struct managed_win *w) { * Retrieve frame extents from a window. */ void win_update_frame_extents(session_t *ps, struct managed_win *w, xcb_window_t client) { - winprop_t prop = x_get_prop(ps, client, ps->atoms->a_NET_FRAME_EXTENTS, 4L, + winprop_t prop = x_get_prop(ps->c, client, ps->atoms->a_NET_FRAME_EXTENTS, 4L, XCB_ATOM_CARDINAL, 32); if (prop.nitems == 4) { @@ -2702,7 +2702,7 @@ bool win_is_fullscreen(const session_t *ps, const struct managed_win *w) { bool win_is_bypassing_compositor(const session_t *ps, const struct managed_win *w) { bool ret = false; - auto prop = x_get_prop(ps, w->client_win, ps->atoms->a_NET_WM_BYPASS_COMPOSITOR, + auto prop = x_get_prop(ps->c, w->client_win, ps->atoms->a_NET_WM_BYPASS_COMPOSITOR, 1L, XCB_ATOM_CARDINAL, 32); if (prop.nitems && *prop.c32 == 1) { diff --git a/src/x.c b/src/x.c index 3ee11ac..bf28845 100644 --- a/src/x.c +++ b/src/x.c @@ -42,11 +42,11 @@ * @return a winprop_t structure containing the attribute * and number of items. A blank one on failure. */ -winprop_t x_get_prop_with_offset(const session_t *ps, xcb_window_t w, xcb_atom_t atom, +winprop_t x_get_prop_with_offset(xcb_connection_t *c, xcb_window_t w, xcb_atom_t atom, int offset, int length, xcb_atom_t rtype, int rformat) { xcb_get_property_reply_t *r = xcb_get_property_reply( - ps->c, - xcb_get_property(ps->c, 0, w, atom, rtype, to_u32_checked(offset), + c, + xcb_get_property(c, 0, w, atom, rtype, to_u32_checked(offset), to_u32_checked(length)), NULL); @@ -70,10 +70,10 @@ winprop_t x_get_prop_with_offset(const session_t *ps, xcb_window_t w, xcb_atom_t } /// Get the type, format and size in bytes of a window's specific attribute. -winprop_info_t x_get_prop_info(const session_t *ps, xcb_window_t w, xcb_atom_t atom) { +winprop_info_t x_get_prop_info(xcb_connection_t *c, xcb_window_t w, xcb_atom_t atom) { xcb_generic_error_t *e = NULL; auto r = xcb_get_property_reply( - ps->c, xcb_get_property(ps->c, 0, w, atom, XCB_ATOM_ANY, 0, 0), &e); + c, xcb_get_property(c, 0, w, atom, XCB_ATOM_ANY, 0, 0), &e); if (!r) { log_debug_x_error(e, "Failed to get property info for window %#010x", w); free(e); @@ -96,7 +96,7 @@ winprop_info_t x_get_prop_info(const session_t *ps, xcb_window_t w, xcb_atom_t a xcb_window_t wid_get_prop_window(session_t *ps, xcb_window_t wid, xcb_atom_t aprop) { // Get the attribute xcb_window_t p = XCB_NONE; - winprop_t prop = x_get_prop(ps, wid, aprop, 1L, XCB_ATOM_WINDOW, 32); + winprop_t prop = x_get_prop(ps->c, wid, aprop, 1L, XCB_ATOM_WINDOW, 32); // Return it if (prop.nitems) { @@ -114,7 +114,7 @@ xcb_window_t wid_get_prop_window(session_t *ps, xcb_window_t wid, xcb_atom_t apr bool wid_get_text_prop(session_t *ps, xcb_window_t wid, xcb_atom_t prop, char ***pstrlst, int *pnstr) { assert(ps->server_grabbed); - auto prop_info = x_get_prop_info(ps, wid, prop); + auto prop_info = x_get_prop_info(ps->c, wid, prop); auto type = prop_info.type; auto format = prop_info.format; auto length = prop_info.length; @@ -423,9 +423,10 @@ void x_clear_picture_clip_region(xcb_connection_t *c, xcb_render_picture_t pict) } } -enum { XSyncBadCounter = 0, - XSyncBadAlarm = 1, - XSyncBadFence = 2, +enum { + XSyncBadCounter = 0, + XSyncBadAlarm = 1, + XSyncBadFence = 2, }; /** @@ -595,7 +596,8 @@ xcb_pixmap_t x_get_root_back_pixmap(session_t *ps) { // Get the values of background attributes for (int p = 0; background_props_str[p]; p++) { xcb_atom_t prop_atom = get_atom(ps->atoms, background_props_str[p]); - winprop_t prop = x_get_prop(ps, ps->root, prop_atom, 1, XCB_ATOM_PIXMAP, 32); + winprop_t prop = + x_get_prop(ps->c, ps->root, prop_atom, 1, XCB_ATOM_PIXMAP, 32); if (prop.nitems) { pixmap = (xcb_pixmap_t)*prop.p32; free_winprop(&prop); diff --git a/src/x.h b/src/x.h index daa3119..00d6e7c 100644 --- a/src/x.h +++ b/src/x.h @@ -124,19 +124,19 @@ static inline void x_sync(xcb_connection_t *c) { * @return a winprop_t structure containing the attribute * and number of items. A blank one on failure. */ -winprop_t x_get_prop_with_offset(const session_t *ps, xcb_window_t w, xcb_atom_t atom, +winprop_t x_get_prop_with_offset(xcb_connection_t *c, xcb_window_t w, xcb_atom_t atom, int offset, int length, xcb_atom_t rtype, int rformat); /** * Wrapper of wid_get_prop_adv(). */ -static inline winprop_t x_get_prop(const session_t *ps, xcb_window_t wid, xcb_atom_t atom, +static inline winprop_t x_get_prop(xcb_connection_t *c, xcb_window_t wid, xcb_atom_t atom, int length, xcb_atom_t rtype, int rformat) { - return x_get_prop_with_offset(ps, wid, atom, 0L, length, rtype, rformat); + return x_get_prop_with_offset(c, wid, atom, 0L, length, rtype, rformat); } /// Get the type, format and size in bytes of a window's specific attribute. -winprop_info_t x_get_prop_info(const session_t *ps, xcb_window_t w, xcb_atom_t atom); +winprop_info_t x_get_prop_info(xcb_connection_t *c, xcb_window_t w, xcb_atom_t atom); /// Discard all X events in queue or in flight. Should only be used when the server is /// grabbed