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