X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=spectrwm.c;h=546fd579de67205b6153c97bb897bb57bff7e6b0;hb=d50d4826ba8a9098c9881abfd2e6ef8dcbc1c9b2;hp=cdaaebce4d08e02f8fbf4176990409a7ca3aa22a;hpb=644123db12a9cf597a4d4990d9d7077ebbe47061;p=spectrwm.git diff --git a/spectrwm.c b/spectrwm.c index cdaaebc..546fd57 100644 --- a/spectrwm.c +++ b/spectrwm.c @@ -2305,7 +2305,9 @@ restart(struct swm_region *r, union arg *args) bar_extra_stop(); bar_extra = 1; unmap_all(); - XCloseDisplay(display); + xcb_flush(conn); + xcb_disconnect(conn); + execvp(start_argv[0], start_argv); warn("execvp failed"); quit(NULL, NULL); @@ -5527,19 +5529,36 @@ setkeymapping(char *selector, char *value, int flags) void updatenumlockmask(void) { - unsigned int i, j; - XModifierKeymap *modmap; + unsigned int i, j; + xcb_get_modifier_mapping_reply_t *modmap_r; + xcb_keycode_t *modmap, kc; + xcb_key_symbols_t *syms; DNPRINTF(SWM_D_MISC, "updatenumlockmask\n"); numlockmask = 0; - modmap = XGetModifierMapping(display); - for (i = 0; i < 8; i++) - for (j = 0; j < modmap->max_keypermod; j++) - if (modmap->modifiermap[i * modmap->max_keypermod + j] - == XKeysymToKeycode(display, XK_Num_Lock)) - numlockmask = (1 << i); - XFreeModifiermap(modmap); + syms = xcb_key_symbols_alloc(conn); + if (!syms) + return; + + modmap_r = xcb_get_modifier_mapping_reply(conn, + xcb_get_modifier_mapping(conn), + NULL); + if (modmap_r) { + modmap = xcb_get_modifier_mapping_keycodes(modmap_r); + for (i = 0; i < 8; i++) { + for (j = 0; j < modmap_r->keycodes_per_modifier; j++) { + kc = modmap[i * modmap_r->keycodes_per_modifier + + j]; + + if (kc == *((xcb_keycode_t *)xcb_key_symbols_get_keycode(syms, + XK_Num_Lock))) + numlockmask = (1 << i); + } + } + free(modmap_r); + } + xcb_key_symbols_free(syms); } void @@ -6456,7 +6475,6 @@ manage_window(xcb_window_t id) /* Get all the window data in one shot */ ws_idx_atom = get_atom_from_string("_SWM_WS"); - fprintf(stderr, "ws_idx_atom: %d\n", ws_idx_atom); if (ws_idx_atom) { gpr = xcb_get_property_reply(conn, xcb_get_property(conn, False, id, ws_idx_atom, @@ -7951,7 +7969,6 @@ done: xcb_free_gc(conn, screens[i].bar_gc); XFreeFontSet(display, bar_fs); xcb_disconnect(conn); - XCloseDisplay(display); return (0); }