aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoroga2008-06-13 03:41:58 +0000
committeroga2008-06-13 03:41:58 +0000
commitf46d7bd87c799183f70799a954e3a80a7ee004ca (patch)
tree4218f8819955bcddb729dd26b86be3312a4e57fc
parent8d2dabae084faa03cd495a27282aacf3b86d8e81 (diff)
downloadcwm-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 '')
-rw-r--r--xevents.c18
1 files 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);
}