Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!asuvax!ncar!elroy.jpl.nasa.gov!sdd.hp.com!spool.mu.edu!think.com!snorkelwacker.mit.edu!bloom-beacon!dont-send-mail-to-path-lines From: smarks@eng.sun.COM (Stuart Marks) Newsgroups: comp.windows.x Subject: Re: Emacs and X server locking up under OpenWindows Message-ID: <9102150151.AA14247@trantor.Eng.Sun.COM> Date: 15 Feb 91 01:51:03 GMT References: <9102131613.AA21645@zia.aoc.nrao.edu> Sender: daemon@athena.mit.edu (Mr Background) Organization: The Internet Lines: 61 | Hanging the server by pressing ADJUST over a resize corner is a well known | bug (in olwm?). I'm a little surprised that killing the client unfreezes | things but stranger things have happened. Yes, this is a bug in olwm. The problem is that olwm has a synchronous grab on the button, but fails to issue an AllowEvents request in certain cases. If you have only the binary, your only workaround is to avoid pressing ADJUST (middle mouse button) over the resize corner, or to switch to follow-mouse focus mode. Killing the client unmaps the grab window, which releases the grab. If you have the source and you're willing to hack a bit, you can apply the following diffs. (Sorry, no warranty.) Pressing ADJUST over a resize corner or window button will do something a bit weird (i.e. you might get the rubber-band rectangle on the root) but at least it won't hang your system any more. Enjoy, s'marks Stuart W. Marks ARPA: smarks@eng.sun.com Windows & Graphics Software UUCP: sun!smarks Sun Microsystems, Inc. *** winresize.c- Thu Feb 14 15:56:15 1991 --- winresize.c Thu Feb 14 16:38:56 1991 *************** *** 51,58 **** XEvent *event; WinResize *winInfo; { ! if (MouseButton(dpy, event) != MB_SELECT) return; /* draw depressed corner */ winInfo->depressed = True; --- 51,60 ---- XEvent *event; WinResize *winInfo; { ! if (MouseButton(dpy, event) != MB_SELECT) { ! XAllowEvents(dpy, AsyncBoth, CurrentTime); return; + } /* draw depressed corner */ winInfo->depressed = True; *** winbutton.c- Thu Feb 14 15:56:11 1991 --- winbutton.c Thu Feb 14 16:40:45 1991 *************** *** 60,65 **** --- 60,66 ---- switch (MouseButton(dpy, event)) { case MB_ADJUST: + XAllowEvents(dpy, AsyncBoth, CurrentTime); return; case MB_MENU: