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 _DAMAGEEXTINT_H_
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define _DAMAGEEXTINT_H_
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include <X11/X.h>
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include <X11/Xproto.h>
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include "misc.h"
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include "os.h"
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include "dixstruct.h"
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include "extnsionst.h"
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include <X11/extensions/damageproto.h>
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include "windowstr.h"
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include "selection.h"
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include "scrnintstr.h"
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include "damageext.h"
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include "damage.h"
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include "xfixes.h"
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _DamageClient {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync CARD32 major_version;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync CARD32 minor_version;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int critical;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} DamageClientRec, *DamageClientPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define GetDamageClient(pClient) ((DamageClientPtr)dixLookupPrivate(&(pClient)->devPrivates, DamageClientPrivateKey))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _DamageExt {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync DamagePtr pDamage;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync DrawablePtr pDrawable;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync DamageReportLevel level;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ClientPtr pClient;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XID id;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} DamageExtRec, *DamageExtPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define VERIFY_DAMAGEEXT(pDamageExt, rid, client, mode) { \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int rc = dixLookupResourceByType((pointer *)&(pDamageExt), rid, \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync DamageExtType, client, mode); \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync if (rc != Success) \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync return (rc == BadValue) ? DamageErrorBase + BadDamage : rc; \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync}
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncvoid
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncDamageExtSetCritical (ClientPtr pClient, Bool critical);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif /* _DAMAGEEXTINT_H_ */