diff options
author | oga | 2008-06-13 03:41:58 +0000 |
---|---|---|
committer | oga | 2008-06-13 03:41:58 +0000 |
commit | f46d7bd87c799183f70799a954e3a80a7ee004ca (patch) | |
tree | 4218f8819955bcddb729dd26b86be3312a4e57fc /xevents.c | |
parent | 8d2dabae084faa03cd495a27282aacf3b86d8e81 (diff) | |
download | cwm-f46d7bd87c799183f70799a954e3a80a7ee004ca.tar.gz |
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@
Diffstat (limited to 'xevents.c')
-rw-r--r-- | xevents.c | 18 |
1 files changed, 3 insertions, 15 deletions
@@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $Id: xevents.c,v 1.17 2008/06/12 05:01:13 okan Exp $ + * $Id: xevents.c,v 1.18 2008/06/13 03:41:58 oga Exp $ */ /* @@ -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); } |