Blame src/ClDisplay.c

Packit Service dc579d
Packit Service dc579d
/*
Packit Service dc579d
Packit Service dc579d
Copyright 1985, 1990, 1998  The Open Group
Packit Service dc579d
Packit Service dc579d
Permission to use, copy, modify, distribute, and sell this software and its
Packit Service dc579d
documentation for any purpose is hereby granted without fee, provided that
Packit Service dc579d
the above copyright notice appear in all copies and that both that
Packit Service dc579d
copyright notice and this permission notice appear in supporting
Packit Service dc579d
documentation.
Packit Service dc579d
Packit Service dc579d
The above copyright notice and this permission notice shall be included
Packit Service dc579d
in all copies or substantial portions of the Software.
Packit Service dc579d
Packit Service dc579d
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
Packit Service dc579d
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
Packit Service dc579d
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
Packit Service dc579d
IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
Packit Service dc579d
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
Packit Service dc579d
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
Packit Service dc579d
OTHER DEALINGS IN THE SOFTWARE.
Packit Service dc579d
Packit Service dc579d
Except as contained in this notice, the name of The Open Group shall
Packit Service dc579d
not be used in advertising or otherwise to promote the sale, use or
Packit Service dc579d
other dealings in this Software without prior written authorization
Packit Service dc579d
from The Open Group.
Packit Service dc579d
Packit Service dc579d
*/
Packit Service dc579d
Packit Service dc579d
#ifdef HAVE_CONFIG_H
Packit Service dc579d
#include <config.h>
Packit Service dc579d
#endif
Packit Service dc579d
#include "Xxcbint.h"
Packit Service dc579d
#include "Xlib.h"
Packit Service dc579d
#include "Xlibint.h"
Packit Service dc579d
#include "Xintconn.h"
Packit Service dc579d
Packit Service dc579d
/*
Packit Service dc579d
 * XCloseDisplay - XSync the connection to the X Server, close the connection,
Packit Service dc579d
 * and free all associated storage.  Extension close procs should only free
Packit Service dc579d
 * memory and must be careful about the types of requests they generate.
Packit Service dc579d
 */
Packit Service dc579d
Packit Service dc579d
int
Packit Service dc579d
XCloseDisplay (
Packit Service dc579d
	register Display *dpy)
Packit Service dc579d
{
Packit Service dc579d
	register _XExtension *ext;
Packit Service dc579d
	register int i;
Packit Service dc579d
Packit Service dc579d
	if (!(dpy->flags & XlibDisplayClosing))
Packit Service dc579d
	{
Packit Service dc579d
	    dpy->flags |= XlibDisplayClosing;
Packit Service dc579d
	    for (i = 0; i < dpy->nscreens; i++) {
Packit Service dc579d
		    register Screen *sp = &dpy->screens[i];
Packit Service dc579d
		    XFreeGC (dpy, sp->default_gc);
Packit Service dc579d
	    }
Packit Service dc579d
	    if (dpy->cursor_font != None) {
Packit Service dc579d
		XUnloadFont (dpy, dpy->cursor_font);
Packit Service dc579d
	    }
Packit Service dc579d
	    XSync(dpy, 1);  /* throw away pending events, catch errors */
Packit Service dc579d
	    /* call out to any extensions interested */
Packit Service dc579d
	    for (ext = dpy->ext_procs; ext; ext = ext->next) {
Packit Service dc579d
		if (ext->close_display)
Packit Service dc579d
		    (*ext->close_display)(dpy, &ext->codes);
Packit Service dc579d
	    }
Packit Service dc579d
	    /* if the closes generated more protocol, sync them up */
Packit Service dc579d
	    if (X_DPY_GET_REQUEST(dpy) != X_DPY_GET_LAST_REQUEST_READ(dpy))
Packit Service dc579d
		XSync(dpy, 1);
Packit Service dc579d
	}
Packit Service dc579d
	xcb_disconnect(dpy->xcb->connection);
Packit Service dc579d
	_XFreeDisplayStructure (dpy);
Packit Service dc579d
	return 0;
Packit Service dc579d
}