Mercurial > emacs
changeset 14694:41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
(x_connection_close_if_hung): New subroutine, at the end of the file.
Include X11/Xlibint.h only for this function.
#undef bcopy, bzero, bcmp, min, max first.
Define malloc and free to avoid type conflicts.
(x_connection_signal): Use x_connection_close_if_hung.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Tue, 27 Feb 1996 02:33:15 +0000 |
parents | db61bfe289aa |
children | c62f7ff56c40 |
files | src/xterm.c |
diffstat | 1 files changed, 46 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xterm.c Tue Feb 27 01:49:07 1996 +0000 +++ b/src/xterm.c Tue Feb 27 02:33:15 1996 +0000 @@ -111,8 +111,7 @@ #endif #ifdef SOLARIS2 -/* For XlibDisplayWriting */ -#include <X11/Xlibint.h> +#define X_CONNECTION_LOCK_FLAG XlibDisplayWriting #endif #ifndef min @@ -4648,19 +4647,7 @@ { signal (SIGPIPE, x_connection_signal_1); -#ifdef SOLARIS2 -#ifdef XlibDisplayWriting - /* If the thread-interlock is locked, assume this connection is dead. - This assumes that the library does not make other threads - that can be locking the display legitimately. */ - if (x_connection_signal_dpyinfo->display->flags & XlibDisplayWriting) - { - x_connection_signal_dpyinfo->display->flags &= ~XlibDisplayWriting; - x_connection_closed (x_connection_signal_dpyinfo->display, - "connection was lost"); - } -#endif -#endif + x_connection_close_if_hung (x_connection_signal_dpyinfo); XNoOp (x_connection_signal_dpyinfo->display); @@ -6250,4 +6237,47 @@ staticpro (&Qvendor_specific_keysyms); Qvendor_specific_keysyms = intern ("vendor-specific-keysyms"); } -#endif /* ! defined (HAVE_X_WINDOWS) */ + +/* Avoid warnings or errors from including Xlibint.h. + We don't need these functions for the rest of this file. */ +#undef bzero +#undef bcopy +#undef bcmp +#undef min +#undef max + +#ifdef X_CONNECTION_LOCK_FLAG +#define free loserfree +#define malloc losermalloc +/* For XlibDisplayWriting */ +#include <X11/Xlibint.h> +#endif + +/* Check whether display connection DPYINFO is hung + because its thread-interlock is locked. + If it is, close the connection. + Do nothing if this system does not have a thread interlock. */ + +x_connection_close_if_hung (dpyinfo) + struct x_display_info *dpyinfo; +{ + /* This tests (1) whether X_CONNECTION_LOCK_FLAG is defined at all, + and (2) whether the name it is defined as is itself defined. + (It ought to have been defined by Xlibint.h. */ +#if X_CONNECTION_LOCK_FLAG + + if (dpyinfo->display->flags & X_CONNECTION_LOCK_FLAG) + { + /* If the thread-interlock is locked, assume this connection is dead. + This assumes that the library does not make other threads + that can be locking the display legitimately. */ + + dpyinfo->display->flags &= ~X_CONNECTION_LOCK_FLAG; + x_connection_closed (dpyinfo->display, "connection was lost"); + } +#endif /* X_CONNECTION_LOCK_FLAG */ +} + +/* Don't put any additional functions here! */ + +#endif /* not HAVE_X_WINDOWS */