home *** CD-ROM | disk | FTP | other *** search
- /* $XConsortium: DisplayQue.h,v 1.5 91/07/22 23:45:45 converse Exp $
- *
- * Copyright 1989 Massachusetts Institute of Technology
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. M.I.T. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T.
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
- #ifndef _XMU_DISPLAYQUE_H_
- #define _XMU_DISPLAYQUE_H_
-
- #include <X11/Xmu/CloseHook.h>
- #include <X11/Xfuncproto.h>
-
- /*
- * Public Entry Points
- *
- *
- * XmuDisplayQueue *XmuDQCreate (closefunc, freefunc, data)
- * XmuCloseDisplayQueueProc closefunc;
- * XmuFreeDisplayQueueProc freefunc;
- * caddr_t data;
- *
- * Creates and returns a queue into which displays may be placed. When
- * the display is closed, the closefunc (if non-NULL) is upcalled with
- * as follows:
- *
- * (*closefunc) (queue, entry)
- *
- * The freeproc, if non-NULL, is called whenever the last display is
- * closed, notifying the creator that display queue may be released
- * using XmuDQDestroy.
- *
- *
- * Bool XmuDQDestroy (q, docallbacks)
- * XmuDisplayQueue *q;
- * Bool docallbacks;
- *
- * Releases all memory for the indicated display queue. If docallbacks
- * is true, then the closefunc (if non-NULL) is called for each
- * display.
- *
- *
- * XmuDisplayQueueEntry *XmuDQLookupDisplay (q, dpy)
- * XmuDisplayQueue *q;
- * Display *dpy;
- *
- * Returns the queue entry for the specified display or NULL if the
- * display is not in the queue.
- *
- *
- * XmuDisplayQueueEntry *XmuDQAddDisplay (q, dpy, data)
- * XmuDisplayQueue *q;
- * Display *dpy;
- * caddr_t data;
- *
- * Adds the indicated display to the end of the queue or NULL if it
- * is unable to allocate memory. The data field may be used by the
- * caller to attach arbitrary data to this display in this queue. The
- * caller should use XmuDQLookupDisplay to make sure that the display
- * hasn't already been added.
- *
- *
- * Bool XmuDQRemoveDisplay (q, dpy)
- * XmuDisplayQueue *q;
- * Display *dpy;
- *
- * Removes the specified display from the given queue. If the
- * indicated display is not found on this queue, False is returned,
- * otherwise True is returned.
- */
-
- typedef struct _XmuDisplayQueue XmuDisplayQueue;
- typedef struct _XmuDisplayQueueEntry XmuDisplayQueueEntry;
-
- typedef int (*XmuCloseDisplayQueueProc)(
- #if NeedFunctionPrototypes
- XmuDisplayQueue* /* queue */,
- XmuDisplayQueueEntry* /* entry */
- #endif
- );
-
- typedef int (*XmuFreeDisplayQueueProc)(
- #if NeedFunctionPrototypes
- XmuDisplayQueue* /* queue */
- #endif
- );
-
- struct _XmuDisplayQueueEntry {
- struct _XmuDisplayQueueEntry *prev, *next;
- Display *display;
- CloseHook closehook;
- caddr_t data;
- };
-
- struct _XmuDisplayQueue {
- int nentries;
- XmuDisplayQueueEntry *head, *tail;
- XmuCloseDisplayQueueProc closefunc;
- XmuFreeDisplayQueueProc freefunc;
- caddr_t data;
- };
-
- _XFUNCPROTOBEGIN
-
- extern XmuDisplayQueue *XmuDQCreate(
- #if NeedFunctionPrototypes
- XmuCloseDisplayQueueProc /* closefunc */,
- XmuFreeDisplayQueueProc /* freefunc */,
- caddr_t /* data */
- #endif
- );
-
- extern Bool XmuDQDestroy(
- #if NeedFunctionPrototypes
- XmuDisplayQueue* /* q */,
- Bool /* docallbacks */
- #endif
- );
-
- extern XmuDisplayQueueEntry *XmuDQLookupDisplay(
- #if NeedFunctionPrototypes
- XmuDisplayQueue* /* q */,
- Display* /* dpy */
- #endif
- );
-
- extern XmuDisplayQueueEntry *XmuDQAddDisplay(
- #if NeedFunctionPrototypes
- XmuDisplayQueue* /* q */,
- Display* /* dpy */,
- caddr_t /* data */
- #endif
- );
-
- extern Bool XmuDQRemoveDisplay(
- #if NeedFunctionPrototypes
- XmuDisplayQueue* /* q */,
- Display* /* dpy */
- #endif
- );
-
- _XFUNCPROTOEND
-
- #define XmuDQNDisplays(q) ((q)->nentries)
-
- #endif /* _XMU_DISPLAYQUE_H_ */
-