x: restrict the scope of arguments taken by x_get_prop*
They only need a xcb_connection_t, don't need to pass the whole session_t. Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
16
src/c2.c
16
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 *);
|
||||
|
||||
10
src/win.c
10
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) {
|
||||
|
||||
24
src/x.c
24
src/x.c
@@ -42,11 +42,11 @@
|
||||
* @return a <code>winprop_t</code> 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);
|
||||
|
||||
8
src/x.h
8
src/x.h
@@ -124,19 +124,19 @@ static inline void x_sync(xcb_connection_t *c) {
|
||||
* @return a <code>winprop_t</code> 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
|
||||
|
||||
Reference in New Issue
Block a user