f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * Copyright © 2002 Keith Packard
f0ab104f070bc7f569404826fea1828ed985638cvboxsync *
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * Permission to use, copy, modify, distribute, and sell this software and its
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * documentation for any purpose is hereby granted without fee, provided that
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * the above copyright notice appear in all copies and that both that
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * copyright notice and this permission notice appear in supporting
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * documentation, and that the name of Keith Packard not be used in
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * advertising or publicity pertaining to distribution of the software without
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * specific, written prior permission. Keith Packard makes no
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * representations about the suitability of this software for any purpose. It
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * is provided "as is" without express or implied warranty.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync *
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * PERFORMANCE OF THIS SOFTWARE.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#ifdef HAVE_DIX_CONFIG_H
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#include <dix-config.h>
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#endif
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#ifndef _XFIXES_H_
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define _XFIXES_H_
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#include "resource.h"
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT RESTYPE RegionResType;
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT RESTYPE PointerBarrierType;
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT int XFixesErrorBase;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define VERIFY_REGION(pRegion, rid, client, mode) \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync do { \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int err; \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync err = dixLookupResourceByType((pointer *) &pRegion, rid, \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync RegionResType, client, mode); \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync if (err != Success) { \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync client->errorValue = rid; \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync return err; \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync } \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync } while (0)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define VERIFY_REGION_OR_NONE(pRegion, rid, client, mode) { \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync pRegion = 0; \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync if (rid) VERIFY_REGION(pRegion, rid, client, mode); \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync}
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT RegionPtr
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncXFixesRegionCopy (RegionPtr pRegion);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncstruct PointerBarrier {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 x1, x2, y1, y2;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD32 directions;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync};
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern int
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncbarrier_get_direction(int, int, int, int);
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern BOOL
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncbarrier_is_blocking(const struct PointerBarrier*, int, int, int, int, double*);
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern BOOL
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncbarrier_is_blocking_direction(const struct PointerBarrier*, int);
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern void
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncbarrier_clamp_to_barrier(struct PointerBarrier *barrier, int dir, int *x, int *y);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#endif /* _XFIXES_H_ */