Got questions, comments, patches, etc.?
Contact Jason Woofenden
gitweb
/
spectrwm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix segfault on linux; from nicm
[spectrwm.git]
/
scrotwm.c
diff --git
a/scrotwm.c
b/scrotwm.c
index
d1e0e72
..
ca2a281
100644
(file)
--- a/
scrotwm.c
+++ b/
scrotwm.c
@@
-91,6
+91,7
@@
#endif
/* #define SWM_DEBUG */
#endif
/* #define SWM_DEBUG */
+/* #define SWM_DEBUG */
#ifdef SWM_DEBUG
#define DPRINTF(x...) do { if (swm_debug) fprintf(stderr, x); } while(0)
#define DNPRINTF(n,x...) do { if (swm_debug & n) fprintf(stderr, x); } while(0)
#ifdef SWM_DEBUG
#define DPRINTF(x...) do { if (swm_debug) fprintf(stderr, x); } while(0)
#define DNPRINTF(n,x...) do { if (swm_debug & n) fprintf(stderr, x); } while(0)
@@
-1197,6
+1198,9
@@
vertical_stack(struct workspace *ws, struct swm_geometry *g) {
win->g.h = wc.height = gg.h;
mask = CWX | CWY | CWWidth | CWHeight | CWBorderWidth;
XConfigureWindow(display, win->id, mask, &wc);
win->g.h = wc.height = gg.h;
mask = CWX | CWY | CWWidth | CWHeight | CWBorderWidth;
XConfigureWindow(display, win->id, mask, &wc);
+ /*
+ fprintf(stderr, "vertical_stack: win %d x %d y %d w %d h %d bw %d\n", win->id, win->g.x, win->g.y, win->g.w , win->g.h, wc.border_width);
+ */
}
XMapRaised(display, win->id);
}
XMapRaised(display, win->id);
@@
-1642,7
+1646,9
@@
manage_window(Window id, struct workspace *ws)
win->g.h = win->wa.height;
win->g.x = win->wa.x;
win->g.y = win->wa.y;
win->g.h = win->wa.height;
win->g.x = win->wa.x;
win->g.y = win->wa.y;
-
+ /*
+ fprintf(stderr, "manage window: %d x %d y %d w %d h %d\n", win->id, win->g.x, win->g.y, win->g.w, win->g.h);
+ */
/* XXX make this a table */
bzero(&ch, sizeof ch);
if (XGetClassHint(display, win->id, &ch)) {
/* XXX make this a table */
bzero(&ch, sizeof ch);
if (XGetClassHint(display, win->id, &ch)) {
@@
-1669,7
+1675,7
@@
configurerequest(XEvent *e)
{
XConfigureRequestEvent *ev = &e->xconfigurerequest;
struct ws_win *win;
{
XConfigureRequestEvent *ev = &e->xconfigurerequest;
struct ws_win *win;
- int new = 1;
+ int new = 0;
XWindowChanges wc;
if ((win = find_window(ev->window)) == NULL)
XWindowChanges wc;
if ((win = find_window(ev->window)) == NULL)
@@
-1678,6
+1684,10
@@
configurerequest(XEvent *e)
if (new) {
DNPRINTF(SWM_D_EVENT, "configurerequest: new window: %lu\n",
ev->window);
if (new) {
DNPRINTF(SWM_D_EVENT, "configurerequest: new window: %lu\n",
ev->window);
+ /*
+ fprintf(stderr, "configurerequest: new window: %lu x %d y %d w %d h %d bw %d s %d sm %d\n",
+ ev->window, ev->x, ev->y, ev->width, ev->height, ev->border_width, ev->above, ev->detail);
+ */
bzero(&wc, sizeof wc);
wc.x = ev->x;
wc.y = ev->y;
bzero(&wc, sizeof wc);
wc.x = ev->x;
wc.y = ev->y;
@@
-1688,6
+1698,10
@@
configurerequest(XEvent *e)
wc.stack_mode = ev->detail;
XConfigureWindow(display, ev->window, ev->value_mask, &wc);
} else {
wc.stack_mode = ev->detail;
XConfigureWindow(display, ev->window, ev->value_mask, &wc);
} else {
+ /*
+ fprintf(stderr, "configurerequest: change window: %lu\n",
+ ev->window);
+ */
DNPRINTF(SWM_D_EVENT, "configurerequest: change window: %lu\n",
ev->window);
if (win->floating) {
DNPRINTF(SWM_D_EVENT, "configurerequest: change window: %lu\n",
ev->window);
if (win->floating) {
@@
-2010,7
+2024,7
@@
setup_screens(void)
else
ncrtc = sr->ncrtc;
else
ncrtc = sr->ncrtc;
- for (c = 0; c < ncrtc; c++) {
+ for (c = 0, ci = NULL; c < ncrtc; c++) {
ci = XRRGetCrtcInfo(display, sr, sr->crtcs[c]);
if (ci->noutput == 0)
continue;
ci = XRRGetCrtcInfo(display, sr, sr->crtcs[c]);
if (ci->noutput == 0)
continue;
@@
-2024,7
+2038,8
@@
setup_screens(void)
ci->x, ci->y, ci->width, ci->height);
w++;
}
ci->x, ci->y, ci->width, ci->height);
w++;
}
- XRRFreeCrtcInfo(ci);
+ if (ci)
+ XRRFreeCrtcInfo(ci);
XRRFreeScreenResources(sr);
#else
new_region(&screens[i], &screens[i].ws[w], 0, 0,
XRRFreeScreenResources(sr);
#else
new_region(&screens[i], &screens[i].ws[w], 0, 0,