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