X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=spectrwm.c;h=4831ac046aee2713b2c771b0eb22a900e9aad75c;hb=69f5175f3545d830ffbadf8c9a35c3e0811f16b4;hp=3dbfdaa033bb3caa158ad55546aebfa1eba5ee5e;hpb=28f220a7dfbfd005c7e7515beaa48d5d9d4a7cf7;p=spectrwm.git diff --git a/spectrwm.c b/spectrwm.c index 3dbfdaa..4831ac0 100644 --- a/spectrwm.c +++ b/spectrwm.c @@ -425,7 +425,7 @@ TAILQ_HEAD(ws_win_list, ws_win); /* pid goo */ struct pid_e { TAILQ_ENTRY(pid_e) entry; - long pid; + pid_t pid; int ws; }; TAILQ_HEAD(pid_list, pid_e); @@ -720,7 +720,6 @@ map_window_raised(xcb_window_t win) XCB_CONFIG_WINDOW_STACK_MODE, &val); xcb_map_window(conn, win); - xcb_flush(conn); } xcb_atom_t @@ -843,33 +842,33 @@ teardown_ewmh(void) void ewmh_autoquirk(struct ws_win *win) { - int i; - unsigned long n; - xcb_atom_t type; + uint32_t i, n; + xcb_atom_t *type; xcb_get_property_cookie_t c; xcb_get_property_reply_t *r; c = xcb_get_property(conn, False, win->id, - ewmh[_NET_WM_WINDOW_TYPE].atom, XCB_ATOM_ATOM, 0, (~0L)); + ewmh[_NET_WM_WINDOW_TYPE].atom, XCB_ATOM_ATOM, 0, UINT32_MAX); r = xcb_get_property_reply(conn, c, NULL); if (!r) return; - n = xcb_get_property_value_length(r); + n = xcb_get_property_value_length(r); + type = xcb_get_property_value(r); + for (i = 0; i < n; i++) { - type = *((xcb_atom_t *)xcb_get_property_value(r)); - if (type == ewmh[_NET_WM_WINDOW_TYPE_NORMAL].atom) + if (type[i] == ewmh[_NET_WM_WINDOW_TYPE_NORMAL].atom) break; - if (type == ewmh[_NET_WM_WINDOW_TYPE_DOCK].atom || - type == ewmh[_NET_WM_WINDOW_TYPE_TOOLBAR].atom || - type == ewmh[_NET_WM_WINDOW_TYPE_UTILITY].atom) { + if (type[i] == ewmh[_NET_WM_WINDOW_TYPE_DOCK].atom || + type[i] == ewmh[_NET_WM_WINDOW_TYPE_TOOLBAR].atom || + type[i] == ewmh[_NET_WM_WINDOW_TYPE_UTILITY].atom) { win->floating = 1; win->quirks = SWM_Q_FLOAT | SWM_Q_ANYWHERE; break; } - if (type == ewmh[_NET_WM_WINDOW_TYPE_SPLASH].atom || - type == ewmh[_NET_WM_WINDOW_TYPE_DIALOG].atom) { + if (type[i] == ewmh[_NET_WM_WINDOW_TYPE_SPLASH].atom || + type[i] == ewmh[_NET_WM_WINDOW_TYPE_DIALOG].atom) { win->floating = 1; win->quirks = SWM_Q_FLOAT; break; @@ -1033,7 +1032,7 @@ ewmh_get_win_state(struct ws_win *win) win->ewmh_flags |= SWM_F_MANUAL; c = xcb_get_property(conn, False, win->id, ewmh[_NET_WM_STATE].atom, - XCB_ATOM_ATOM, 0, (~0L)); + XCB_ATOM_ATOM, 0, UINT32_MAX); r = xcb_get_property_reply(conn, c, NULL); if (!r) return; @@ -1167,11 +1166,11 @@ sighdlr(int sig) } struct pid_e * -find_pid(long pid) +find_pid(pid_t pid) { struct pid_e *p = NULL; - DNPRINTF(SWM_D_MISC, "find_pid: %lu\n", pid); + DNPRINTF(SWM_D_MISC, "find_pid: %d\n", pid); if (pid == 0) return (NULL); @@ -1777,6 +1776,8 @@ bar_toggle(struct swm_region *r, union arg *args) stack(); /* must be after stack */ bar_update(); + + xcb_flush(conn); } void @@ -1966,6 +1967,8 @@ version(struct swm_region *r, union arg *args) else strlcpy(bar_vertext, "", sizeof bar_vertext); bar_update(); + + xcb_flush(conn); } void @@ -2570,6 +2573,8 @@ switchws(struct swm_region *r, union arg *args) if (unmap_old) TAILQ_FOREACH(win, &old_ws->winlist, entry) unmap_window(win); + + xcb_flush(conn); } void @@ -2774,6 +2779,8 @@ swapwin(struct swm_region *r, union arg *args) sort_windows(wl); stack(); + + xcb_flush(conn); } void @@ -2962,6 +2969,8 @@ focus(struct swm_region *r, union arg *args) } focus_magic(winfocus); + + xcb_flush(conn); } void @@ -3591,6 +3600,8 @@ send_to_ws(struct swm_region *r, union arg *args) stack(); bar_update(); + + xcb_flush(conn); } void @@ -3613,6 +3624,8 @@ raise_toggle(struct swm_region *r, union arg *args) /* bring floaters back to top */ if (r->ws->always_raise == 0) stack(); + + xcb_flush(conn); } void @@ -3629,6 +3642,8 @@ iconify(struct swm_region *r, union arg *args) r->ws->focus = NULL; a.id = SWM_ARG_ID_FOCUSCUR; focus(r, &a); + + xcb_flush(conn); } char * @@ -3701,6 +3716,7 @@ uniconify(struct swm_region *r, union arg *args) } fclose(lfile); + xcb_flush(conn); } void @@ -3843,6 +3859,8 @@ search_win(struct swm_region *r, union arg *args) } fclose(lfile); + + xcb_flush(conn); } void @@ -4035,6 +4053,8 @@ wkill(struct swm_region *r, union arg *args) else if (r->ws->focus->can_delete) client_msg(r->ws->focus, adelete); + + xcb_flush(conn); } @@ -4095,6 +4115,8 @@ floating_toggle(struct swm_region *r, union arg *args) a.id = SWM_ARG_ID_FOCUSCUR; focus(win->ws->r, &a); } + + xcb_flush(conn); } void @@ -5886,7 +5908,7 @@ setautorun(char *selector, char *value, int flags) char *ap, *sp = s; union arg a; int argc = 0; - long pid; + pid_t pid; struct pid_e *p; if (getenv("SWM_STARTED")) @@ -6227,10 +6249,10 @@ set_child_transient(struct ws_win *win, xcb_window_t *trans) } } -long +pid_t window_get_pid(xcb_window_t win) { - long ret = 0; + pid_t ret = 0; const char *errstr; xcb_atom_t apid; xcb_get_property_cookie_t pc; @@ -6244,10 +6266,12 @@ window_get_pid(xcb_window_t win) pr = xcb_get_property_reply(conn, pc, NULL); if (!pr) goto tryharder; - if (pr->type != XCB_ATOM_CARDINAL) + if (pr->type != XCB_ATOM_CARDINAL) { + free(pr); goto tryharder; + } - ret = *(long *)xcb_get_property_value(pr); + ret = *((pid_t *)xcb_get_property_value(pr)); free(pr); return (ret); @@ -6259,9 +6283,11 @@ tryharder: pr = xcb_get_property_reply(conn, pc, NULL); if (!pr) return (0); - if (pr->type != XCB_ATOM_STRING) + if (pr->type != XCB_ATOM_STRING) { free(pr); return (0); + } + ret = strtonum(xcb_get_property_value(pr), 0, UINT_MAX, &errstr); free(pr); @@ -7061,6 +7087,7 @@ unmapnotify(xcb_unmap_notify_event_t *e) /* resend unmap because we ated it */ xcb_unmap_window(conn, e->window); + xcb_flush(conn); } }