From f46d7bd87c799183f70799a954e3a80a7ee004ca Mon Sep 17 00:00:00 2001 From: oga Date: Fri, 13 Jun 2008 03:41:58 +0000 Subject: 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@ --- xevents.c | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/xevents.c b/xevents.c index 99bf5b5..926cdc3 100644 --- a/xevents.c +++ b/xevents.c @@ -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); } -- cgit v1.2.3-2-gb3c3