b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/*
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * Copyright © 2002 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#ifdef HAVE_DIX_CONFIG_H
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include <dix-config.h>
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#ifndef _XFIXES_H_
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define _XFIXES_H_
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include "resource.h"
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT RESTYPE RegionResType;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int XFixesErrorBase;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define VERIFY_REGION(pRegion, rid, client, mode) \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync do { \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int err; \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync err = dixLookupResourceByType((pointer *) &pRegion, rid, \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync RegionResType, client, mode); \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync if (err == BadValue) { \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync client->errorValue = rid; \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync return XFixesErrorBase + BadRegion; \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync } else if (err != Success) { \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync client->errorValue = rid; \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync return err; \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync } \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync } while (0)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define VERIFY_REGION_OR_NONE(pRegion, rid, client, mode) { \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pRegion = 0; \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync if (rid) VERIFY_REGION(pRegion, rid, client, mode); \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync}
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT RegionPtr
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXFixesRegionCopy (RegionPtr pRegion);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif /* _XFIXES_H_ */