a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync/*
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * Copyright © 2002 Keith Packard
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync *
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * Permission to use, copy, modify, distribute, and sell this software and its
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * documentation for any purpose is hereby granted without fee, provided that
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * the above copyright notice appear in all copies and that both that
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * copyright notice and this permission notice appear in supporting
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * documentation, and that the name of Keith Packard not be used in
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * advertising or publicity pertaining to distribution of the software without
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * specific, written prior permission. Keith Packard makes no
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * representations about the suitability of this software for any purpose. It
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * is provided "as is" without express or implied warranty.
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync *
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * PERFORMANCE OF THIS SOFTWARE.
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#ifdef HAVE_DIX_CONFIG_H
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#include <dix-config.h>
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#endif
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#ifndef _DAMAGEEXTINT_H_
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define _DAMAGEEXTINT_H_
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#include <X11/X.h>
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#include <X11/Xproto.h>
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#include "misc.h"
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#include "os.h"
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#include "dixstruct.h"
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#include "extnsionst.h"
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#include <X11/extensions/damageproto.h>
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#include "windowstr.h"
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#include "selection.h"
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#include "scrnintstr.h"
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#include "damage.h"
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#include "xfixes.h"
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsynctypedef struct _DamageClient {
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync CARD32 major_version;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync CARD32 minor_version;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int critical;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync} DamageClientRec, *DamageClientPtr;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define GetDamageClient(pClient) ((DamageClientPtr)dixLookupPrivate(&(pClient)->devPrivates, DamageClientPrivateKey))
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsynctypedef struct _DamageExt {
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DamagePtr pDamage;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DrawablePtr pDrawable;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DamageReportLevel level;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync ClientPtr pClient;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync XID id;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync XID drawable;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync} DamageExtRec, *DamageExtPtr;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define VERIFY_DAMAGEEXT(pDamageExt, rid, client, mode) { \
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int rc = dixLookupResourceByType((pointer *)&(pDamageExt), rid, \
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DamageExtType, client, mode); \
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync if (rc != Success) \
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync return rc; \
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync}
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncvoid
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DamageExtSetCritical(ClientPtr pClient, Bool critical);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#endif /* _DAMAGEEXTINT_H_ */