b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/*
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * $Id: damageextint.h,v 1.5 2005/07/03 07:01:17 daniels Exp $
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Copyright © 2002 Keith Packard
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Permission to use, copy, modify, distribute, and sell this software and its
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * documentation for any purpose is hereby granted without fee, provided that
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * the above copyright notice appear in all copies and that both that
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * copyright notice and this permission notice appear in supporting
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * documentation, and that the name of Keith Packard not be used in
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * advertising or publicity pertaining to distribution of the software without
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * specific, written prior permission. Keith Packard makes no
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * representations about the suitability of this software for any purpose. It
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * is provided "as is" without express or implied warranty.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * PERFORMANCE OF THIS SOFTWARE.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifdef HAVE_DIX_CONFIG_H
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include <dix-config.h>
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifndef _DAMAGEEXTINT_H_
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define _DAMAGEEXTINT_H_
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define NEED_EVENTS
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include <X11/X.h>
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include <X11/Xproto.h>
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include "misc.h"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include "os.h"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include "dixstruct.h"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include "extnsionst.h"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include <X11/extensions/damageproto.h>
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include "windowstr.h"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include "selection.h"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include "scrnintstr.h"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include "damageext.h"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include "damage.h"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include "xfixes.h"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern unsigned char DamageReqCode;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern int DamageEventBase;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern int DamageErrorBase;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern int DamageClientPrivateIndex;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern RESTYPE DamageExtType;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern RESTYPE DamageExtWinType;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct _DamageClient {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD32 major_version;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD32 minor_version;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int critical;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} DamageClientRec, *DamageClientPtr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define GetDamageClient(pClient) ((DamageClientPtr) (pClient)->devPrivates[DamageClientPrivateIndex].ptr)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct _DamageExt {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DamagePtr pDamage;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DrawablePtr pDrawable;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DamageReportLevel level;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ClientPtr pClient;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync XID id;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} DamageExtRec, *DamageExtPtr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern int (*ProcDamageVector[/*XDamageNumberRequests*/])(ClientPtr);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern int (*SProcDamageVector[/*XDamageNumberRequests*/])(ClientPtr);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define VERIFY_DAMAGEEXT(pDamageExt, rid, client, mode) { \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync pDamageExt = SecurityLookupIDByType (client, rid, DamageExtType, mode); \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync if (!pDamageExt) { \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync client->errorValue = rid; \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync return DamageErrorBase + BadDamage; \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync } \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync}
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncvoid
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncSDamageNotifyEvent (xDamageNotifyEvent *from,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync xDamageNotifyEvent *to);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncvoid
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncDamageExtSetCritical (ClientPtr pClient, Bool critical);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif /* _DAMAGEEXTINT_H_ */