mirror of
https://github.com/Interlisp/maiko.git
synced 2026-01-13 23:27:12 +00:00
Lock X updates for all systems and lock around X cleanup at exit (#391)
* Lock X updates for all systems and lock around X cleanup at exit All systems which could generate I/O interrupts on the X file descriptor need to have locking enabled, or there is a high probability that the X library will deadlock. This requirement may be removed in the future with restructuring of the way that the interrupt driven I/O is handled. Ensure that the appropriate XLOCK/XUNLOCK is done around the X window closing code. * Also lock X updates when building with CMake.
This commit is contained in:
parent
934a86fbb5
commit
e957e331c4
@ -30,7 +30,7 @@ OPTION(MAIKO_DISPLAY_X11 "Use X11 for display." ON)
|
||||
IF(MAIKO_DISPLAY_X11)
|
||||
FIND_PACKAGE(X11 REQUIRED)
|
||||
SET(MAIKO_DISPLAY_X11_DEFINITIONS
|
||||
"-DXWINDOW"
|
||||
"-DXWINDOW -DLOCK_X_UPDATES"
|
||||
)
|
||||
SET(MAIKO_DISPLAY_X11_LIBRARIES X11::X11)
|
||||
SET(MAIKO_DISPLAY_X11_SRCS
|
||||
|
||||
@ -14,7 +14,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
|
||||
XFLAGS = -DXWINDOW
|
||||
XFLAGS = -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
|
||||
@ -13,7 +13,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
|
||||
XFLAGS = -I/opt/X11/include -DXWINDOW
|
||||
XFLAGS = -I/opt/X11/include -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g
|
||||
|
||||
@ -13,7 +13,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
|
||||
XFLAGS = -I/opt/X11/include -DXWINDOW
|
||||
XFLAGS = -I/opt/X11/include -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2
|
||||
|
||||
@ -13,7 +13,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
|
||||
XFLAGS = -I/usr/X11/include -DXWINDOW
|
||||
XFLAGS = -I/usr/X11/include -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g
|
||||
|
||||
@ -13,7 +13,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
|
||||
XFLAGS = -I/opt/X11/include -DXWINDOW
|
||||
XFLAGS = -I/opt/X11/include -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O1 -g
|
||||
|
||||
@ -13,7 +13,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
|
||||
XFLAGS = -I/opt/X11/include -DXWINDOW
|
||||
XFLAGS = -I/opt/X11/include -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it
|
||||
OPTFLAGS = -O0 -g
|
||||
|
||||
@ -13,7 +13,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
|
||||
XFLAGS = -I/opt/X11/include -DXWINDOW
|
||||
XFLAGS = -I/opt/X11/include -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O0 -g3
|
||||
|
||||
@ -13,7 +13,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
|
||||
XFLAGS = -I/opt/X11/include -DXWINDOW
|
||||
XFLAGS = -I/opt/X11/include -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O0 -g
|
||||
|
||||
@ -14,7 +14,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
|
||||
XFLAGS = -DXWINDOW
|
||||
XFLAGS = -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it
|
||||
OPTFLAGS = -O0 -g
|
||||
|
||||
@ -30,7 +30,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xrdopt.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
XFLAGS = -DXWINDOW
|
||||
XFLAGS = -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -g for MAKEINIT, as it needs debugging often.
|
||||
OPTFLAGS = -g3 -O0
|
||||
|
||||
@ -13,7 +13,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
|
||||
XFLAGS = -DXWINDOW
|
||||
XFLAGS = -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
|
||||
@ -13,7 +13,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xrdopt.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
XFLAGS = -DXWINDOW
|
||||
XFLAGS = -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
|
||||
@ -13,7 +13,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xrdopt.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
XFLAGS = -DXWINDOW
|
||||
XFLAGS = -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
|
||||
@ -14,7 +14,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
|
||||
XFLAGS = -DXWINDOW
|
||||
XFLAGS = -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
|
||||
@ -13,7 +13,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
|
||||
XFLAGS = -I/usr/X11R6/include -DXWINDOW
|
||||
XFLAGS = -I/usr/X11R6/include -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
|
||||
@ -22,7 +22,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xrdopt.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
XFLAGS = -DXWINDOW
|
||||
XFLAGS = -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g
|
||||
|
||||
@ -22,7 +22,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xrdopt.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
XFLAGS = -DXWINDOW
|
||||
XFLAGS = -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
|
||||
@ -29,7 +29,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xrdopt.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
XFLAGS = -DXWINDOW
|
||||
XFLAGS = -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
|
||||
@ -22,7 +22,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xrdopt.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
XFLAGS = -DXWINDOW
|
||||
XFLAGS = -DXWINDOW -DLOCK_X_UPDATES
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g
|
||||
|
||||
@ -108,13 +108,15 @@ void lisp_Xexit(DspInterface dsp)
|
||||
{
|
||||
assert(Lisp_Xinitialized);
|
||||
|
||||
#if defined(OS5) && defined(I_SETSIG)
|
||||
#if defined(I_SETSIG)
|
||||
ioctl(ConnectionNumber(dsp->display_id), I_SETSIG, 0); /* so no interrupts happen during */
|
||||
#endif
|
||||
|
||||
XLOCK;
|
||||
XDestroySubwindows(dsp->display_id, dsp->LispWindow);
|
||||
XDestroyWindow(dsp->display_id, dsp->LispWindow);
|
||||
XCloseDisplay(dsp->display_id);
|
||||
XUNLOCK(dsp);
|
||||
|
||||
Lisp_Xinitialized = false;
|
||||
} /* end lisp_Xexit */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user