I wrote:
Xt may be a different matter, although it could be as simple as
removing the appropriate `Display *' from the XtAppContext structure,
so that XtAppNextEvent doesn't try select()ing on the corresponding
descriptor, and ensuring that you never pass the `Display *' (or a
Widget etc which refers to it) to Xt after that.
I guess that someone will have to try it and see.
Some good news and some bad news.
A simple test case seems to indicate that you can longjmp() out of the
IOErrorHandler as long as you delete the `Display *' from the
XtAppContext (if you don't, select() continuously fails).
The bad news is that:
a) The XtDeleteFromAppContext function is internal to libXt, and
(worse still):
b) XtAppContext is an opaque type. It's actually an `_XtAppStruct *',
and _XtAppStruct is defined in InitialI.h, which is an internal Xt
header. We could just copy the definition, but there's no guarantee
that individual vendors haven't made changes to it.
IOW: there seems to be a solution, but I don't know whether it can be
implemented in a way that doesn't mean that you need the X11 source
code to build XEmacs.
--
Glynn Clements <glynn(a)sensei.co.uk>