163 lines
4.7 KiB
C
163 lines
4.7 KiB
C
/* $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_ */
|