X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=spectrwm.c;h=e5a8a02d8a885e8bb4f49f393336059d7b771711;hb=3b291e14599f33b779c499c57745238ad46ea90c;hp=e68277446beb4869586a6765909e518b1cc9d3eb;hpb=ec833b84b1acee0dc58a9960d4a3012411ace726;p=spectrwm.git diff --git a/spectrwm.c b/spectrwm.c index e682774..e5a8a02 100644 --- a/spectrwm.c +++ b/spectrwm.c @@ -659,7 +659,7 @@ void focus_magic(struct ws_win *); xcb_atom_t get_atom_from_string(const char *); xcb_screen_t *get_screen(int); char *get_win_name(xcb_window_t); -uint16_t getstate(xcb_window_t); +uint32_t getstate(xcb_window_t); void grabbuttons(struct ws_win *, int); void map_window_raised(xcb_window_t); void new_region(struct swm_screen *, int, int, int, int); @@ -841,7 +841,7 @@ teardown_ewmh(void) pc = xcb_get_property(conn, 0, screens[i].root, sup_check, XCB_ATOM_WINDOW, 0, 1); pr = xcb_get_property_reply(conn, pc, NULL); - if (pr) { + if (pr && pr->format == sup_check) { id = *((xcb_window_t *)xcb_get_property_value(pr)); xcb_destroy_window(conn, id); @@ -1068,7 +1068,7 @@ void dumpwins(struct swm_region *r, union arg *args) { struct ws_win *win; - uint16_t state; + uint32_t state; xcb_get_window_attributes_cookie_t c; xcb_get_window_attributes_reply_t *wa; @@ -1984,10 +1984,10 @@ set_win_state(struct ws_win *win, uint16_t state) a_state, 32, 2, data); } -uint16_t +uint32_t getstate(xcb_window_t w) { - uint16_t result = 0; + uint32_t result = 0; xcb_get_property_cookie_t c; xcb_get_property_reply_t *r; @@ -1995,7 +1995,8 @@ getstate(xcb_window_t w) r = xcb_get_property_reply(conn, c, NULL); if (r) { - result = *((uint16_t *)xcb_get_property_value(r)); + if (r->type == a_state && r->format == 32 && r->length == 2) + result = *((uint32_t *)xcb_get_property_value(r)); free(r); } @@ -6405,7 +6406,8 @@ window_get_pid(xcb_window_t win) goto tryharder; } - ret = *((pid_t *)xcb_get_property_value(pr)); + if (pr->type == apid && pr->format == 32) + ret = *((pid_t *)xcb_get_property_value(pr)); free(pr); return (ret); @@ -6417,7 +6419,7 @@ tryharder: pr = xcb_get_property_reply(conn, pc, NULL); if (!pr) return (0); - if (pr->type != XCB_ATOM_STRING) { + if (pr->type != apid) { free(pr); return (0); } @@ -6441,7 +6443,7 @@ get_ws_idx(xcb_window_t id) xcb_get_property(conn, 0, id, a_swm_ws, XCB_ATOM_STRING, 0, SWM_PROPLEN), NULL); - if (gpr) { + if (gpr && gpr->type) { proplen = xcb_get_property_value_length(gpr); if (proplen > 0) { prop = malloc(proplen + 1);