X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=spectrwm.c;h=b4b0076905442cc60353013cfaac84dc13c1da0b;hb=98861f7098a45e43b57643af3dedf18fbad52a05;hp=3d7e10e1fc50e571c23c2915a3eaa2222288af0e;hpb=1f49d9c7d5b90d7055078f8b3364a5d3c0284499;p=spectrwm.git diff --git a/spectrwm.c b/spectrwm.c index 3d7e10e..b4b0076 100644 --- a/spectrwm.c +++ b/spectrwm.c @@ -8,6 +8,7 @@ * Copyright (c) 2011-2012 Reginald Kennedy * Copyright (c) 2011-2012 Lawrence Teo * Copyright (c) 2011-2012 Tiago Cunha + * Copyright (c) 2012 David Hill * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -828,9 +829,8 @@ teardown_ewmh(void) xcb_destroy_window(conn, id); xcb_delete_property(conn, screens[i].root, sup_check); xcb_delete_property(conn, screens[i].root, sup_list); - - free(pr); } + free(pr); } } @@ -4284,8 +4284,6 @@ resize(struct ws_win *win, union arg *args) unsigned int shape; /* cursor style */ xcb_cursor_t cursor; xcb_font_t cursor_font; - xcb_grab_pointer_cookie_t gpc; - xcb_grab_pointer_reply_t *gpr; xcb_query_pointer_reply_t *xpr; xcb_generic_event_t *evt; xcb_motion_notify_event_t *mne; @@ -4369,16 +4367,9 @@ resize(struct ws_win *win, union arg *args) xcb_create_glyph_cursor(conn, cursor, cursor_font, cursor_font, shape, shape + 1, 0, 0, 0, 0xffff, 0xffff, 0xffff); - gpc = xcb_grab_pointer(conn, 0, win->id, MOUSEMASK, + xcb_grab_pointer(conn, 0, win->id, MOUSEMASK, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC, XCB_WINDOW_NONE, cursor, XCB_CURRENT_TIME), - gpr = xcb_grab_pointer_reply(conn, gpc, NULL); - if (!gpr) { - xcb_free_cursor(conn, cursor); - xcb_close_font(conn, cursor_font); - free(xpr); - return; - } xcb_flush(conn); resizing = 1; @@ -4458,7 +4449,6 @@ resize(struct ws_win *win, union arg *args) xcb_ungrab_pointer(conn, XCB_CURRENT_TIME); xcb_free_cursor(conn, cursor); xcb_close_font(conn, cursor_font); - free(gpr); free(xpr); DNPRINTF(SWM_D_EVENT, "resize: done\n"); } @@ -4486,8 +4476,6 @@ move(struct ws_win *win, union arg *args) struct swm_region *r = NULL; xcb_font_t cursor_font; xcb_cursor_t cursor; - xcb_grab_pointer_cookie_t gpc; - xcb_grab_pointer_reply_t *gpr; xcb_query_pointer_reply_t *qpr; xcb_generic_event_t *evt; xcb_motion_notify_event_t *mne; @@ -4552,15 +4540,9 @@ move(struct ws_win *win, union arg *args) xcb_create_glyph_cursor(conn, cursor, cursor_font, cursor_font, XC_fleur, XC_fleur + 1, 0, 0, 0, 0xffff, 0xffff, 0xffff); - gpc = xcb_grab_pointer(conn, 0, win->id, MOUSEMASK, + xcb_grab_pointer(conn, 0, win->id, MOUSEMASK, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC, XCB_WINDOW_NONE, cursor, XCB_CURRENT_TIME); - gpr = xcb_grab_pointer_reply(conn, gpc, NULL); - if (!gpr) { - xcb_free_cursor(conn, cursor); - xcb_close_font(conn, cursor_font); - return; - } /* get cursor offset from window root */ qpr = xcb_query_pointer_reply(conn, xcb_query_pointer(conn, win->id), @@ -5528,7 +5510,7 @@ updatenumlockmask(void) + j]; keycode = xcb_key_symbols_get_keycode(syms, XK_Num_Lock); - if (kc == *keycode) + if (kc == *keycode) numlockmask = (1 << i); free(keycode); } @@ -6441,8 +6423,8 @@ get_ws_idx(xcb_window_t id) prop[proplen] = '\0'; } } - free(gpr); } + free(gpr); if (prop) { DNPRINTF(SWM_D_PROP, "get_ws_idx: _SWM_WS: %s\n", prop); @@ -6470,6 +6452,7 @@ manage_window(xcb_window_t id) struct quirk *qp; uint32_t event_mask, i; xcb_icccm_get_wm_protocols_reply_t wpr; + xcb_icccm_get_wm_class_reply_t tmpch; if ((win = find_window(id)) != NULL) return (win); /* already being managed */ @@ -6635,7 +6618,12 @@ manage_window(xcb_window_t id) if (xcb_icccm_get_wm_class_reply(conn, xcb_icccm_get_wm_class(conn, win->id), - &win->ch, NULL)) { + &tmpch, NULL)) { + win->ch.class_name = tmpch.class_name; + win->ch.instance_name = tmpch.instance_name; + + xcb_icccm_get_wm_class_reply_wipe(&tmpch); + DNPRINTF(SWM_D_CLASS, "manage_window: class: %s, name: %s\n", win->ch.class_name, win->ch.instance_name); @@ -6715,8 +6703,6 @@ free_window(struct ws_win *win) if (win->wa) free(win->wa); - xcb_icccm_get_wm_class_reply_wipe(&win->ch); - kill_refs(win); /* paint memory */ @@ -7408,8 +7394,9 @@ scan_xrandr(int i) return; } else ncrtc = srr->num_crtcs; + + crtc = xcb_randr_get_screen_resources_current_crtcs(srr); for (c = 0; c < ncrtc; c++) { - crtc = xcb_randr_get_screen_resources_current_crtcs(srr); cic = xcb_randr_get_crtc_info(conn, crtc[c], XCB_CURRENT_TIME); cir = xcb_randr_get_crtc_info_reply(conn, cic, NULL);