diff options
author | oga <oga> | 2008-06-13 03:41:58 +0000 |
---|---|---|
committer | oga <oga> | 2008-06-13 03:41:58 +0000 |
commit | 01eecac5d41058d900b25cf2df6ee413a8e4dd50 (patch) | |
tree | 0562aa60409d6e43ed0c5198637934d65af66275 | |
parent | 077173527b37c91887a331893529db0c5afc883e (diff) | |
download | cwm-01eecac5d41058d900b25cf2df6ee413a8e4dd50.tar.gz cwm-01eecac5d41058d900b25cf2df6ee413a8e4dd50.tar.xz cwm-01eecac5d41058d900b25cf2df6ee413a8e4dd50.zip |
Don't client_delete() on an Unmap event, only do that on a client delete event.
found by (among others) todd@ when you have a lot of clients and do something that maps and umaps a lot of windows fast. Debugged with aid of gdb, todd, okan and NULL pointers in a pizza place in edmonton while waiting an inordinately long time for food. ok okan@, todd@
-rw-r--r-- | xevents.c | 16 |
1 files changed, 2 insertions, 14 deletions
diff --git a/xevents.c b/xevents.c index b5409cb..076f30b 100644 --- a/xevents.c +++ b/xevents.c @@ -68,21 +68,9 @@ xev_handle_unmapnotify(struct xevent *xev, XEvent *ee) { XUnmapEvent *e = &ee->xunmap; struct client_ctx *cc; - struct screen_ctx *sc; - int wascurrent; - - if ((cc = client_find(e->window)) != NULL) { - sc = CCTOSC(cc); - wascurrent = cc == client_current(); - client_delete(cc, e->send_event, 0); -#ifdef notyet - /* XXX disable the ptrwarp until we handle it - * better. */ - if (!client_delete(cc, e->send_event, 0) && wascurrent) - ;/* client_ptrwarp(new_cc); */ -#endif - } + if ((cc = client_find(e->window)) != NULL) + xu_setstate(cc, WithdrawnState); xev_register(xev); } |