1: #include <X/mit-copyright.h> 2: 3: /* $Header: XCloseDisplay.c,v 10.4 86/02/01 15:30:31 tony Rel $ */ 4: /* Copyright Massachusetts Institute of Technology 1985 */ 5: 6: #include "XlibInternal.h" 7: 8: /* 9: * XCloseDisplay - XSync the connection to the X Server, close the connection, 10: * and free all associated storage. Signals must be masked out during this 11: * operation to guarantee atomicity. 12: */ 13: XCloseDisplay (dpy) 14: register Display *dpy; 15: { 16: register int sig_mask; 17: 18: /* 19: * Mask out all signals so that the library internal state can 20: * be sync'ed with the rest of the world. We don't want to be 21: * interupted while we are flushing and freeing buffers. 22: */ 23: sig_mask = sigsetmask(-1); 24: XSync(TRUE); 25: if (close(dpy->fd) == -1) { 26: /* Argh! someone already closed the descriptor! */ 27: _XIOError(_XlibCurrentDisplay); 28: } 29: sigsetmask(sig_mask); /* Return signals to normal. */ 30: if (dpy->displayname) free(dpy->displayname); 31: free(dpy->buffer); 32: free(dpy); 33: }