03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/*
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Copyright © 2003 Keith Packard
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Permission to use, copy, modify, distribute, and sell this software and its
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * documentation for any purpose is hereby granted without fee, provided that
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * the above copyright notice appear in all copies and that both that
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * copyright notice and this permission notice appear in supporting
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * documentation, and that the name of Keith Packard not be used in
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * advertising or publicity pertaining to distribution of the software without
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * specific, written prior permission. Keith Packard makes no
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * representations about the suitability of this software for any purpose. It
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * is provided "as is" without express or implied warranty.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * PERFORMANCE OF THIS SOFTWARE.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#ifndef _SHMINT_H_
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define _SHMINT_H_
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include <X11/extensions/shmproto.h>
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "screenint.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "pixmap.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "gc.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define XSHM_PUT_IMAGE_ARGS \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DrawablePtr /* dst */, \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GCPtr /* pGC */, \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int /* depth */, \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync unsigned int /* format */, \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int /* w */, \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int /* h */, \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int /* sx */, \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int /* sy */, \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int /* sw */, \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int /* sh */, \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int /* dx */, \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int /* dy */, \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync char * /* data */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define XSHM_CREATE_PIXMAP_ARGS \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ScreenPtr /* pScreen */, \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int /* width */, \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int /* height */, \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int /* depth */, \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync char * /* addr */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct _ShmFuncs {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync PixmapPtr (*CreatePixmap) (XSHM_CREATE_PIXMAP_ARGS);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync void (*PutImage) (XSHM_PUT_IMAGE_ARGS);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} ShmFuncs, *ShmFuncsPtr;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT void
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ShmRegisterFuncs(ScreenPtr pScreen, ShmFuncsPtr funcs);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT void
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ShmRegisterFbFuncs(ScreenPtr pScreen);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT RESTYPE ShmSegType;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT int ShmCompletionCode;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT int BadShmSegCode;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#endif /* _SHMINT_H_ */