deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/***********************************************************
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncCopyright 1987, 1998 The Open Group
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncPermission to use, copy, modify, distribute, and sell this software and its
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncdocumentation for any purpose is hereby granted without fee, provided that
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncthe above copyright notice appear in all copies and that both that
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynccopyright notice and this permission notice appear in supporting
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncdocumentation.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncThe above copyright notice and this permission notice shall be included in
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncall copies or substantial portions of the Software.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncExcept as contained in this notice, the name of The Open Group shall not be
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncused in advertising or otherwise to promote the sale, use or other dealings
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncin this Software without prior written authorization from The Open Group.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync All Rights Reserved
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncPermission to use, copy, modify, and distribute this software and its
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncdocumentation for any purpose and without fee is hereby granted,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncprovided that the above copyright notice appear in all copies and that
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncboth that copyright notice and this permission notice appear in
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncsupporting documentation, and that the name of Digital not be
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncused in advertising or publicity pertaining to distribution of the
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncsoftware without specific, written prior permission.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncSOFTWARE.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync******************************************************************/
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifndef DIX_H
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define DIX_H
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include "gc.h"
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include "window.h"
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include "input.h"
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define EARLIER -1
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SAMETIME 0
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define LATER 1
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define NullClient ((ClientPtr) 0)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define REQUEST(type) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync register type *stuff = (type *)client->requestBuffer
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define REQUEST_SIZE_MATCH(req)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if ((sizeof(req) >> 2) != client->req_len)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return(BadLength)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define REQUEST_AT_LEAST_SIZE(req) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if ((sizeof(req) >> 2) > client->req_len )\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return(BadLength)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define REQUEST_FIXED_SIZE(req, n)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (((sizeof(req) >> 2) > client->req_len) || \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (((sizeof(req) + (n) + 3) >> 2) != client->req_len)) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return(BadLength)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define LEGAL_NEW_RESOURCE(id,client)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (!LegalNewID(id,client)) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync {\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync client->errorValue = id;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return(BadIDChoice);\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync }
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* XXX if you are using this macro, you are probably not generating Match
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * errors where appropriate */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define LOOKUP_DRAWABLE(did, client)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((client->lastDrawableID == did) ? \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync client->lastDrawable : (DrawablePtr)LookupDrawable(did, client))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifdef XACE
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SECURITY_VERIFY_DRAWABLE(pDraw, did, client, mode)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync {\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pDraw = (DrawablePtr) SecurityLookupIDByClass(client, did, \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync RC_DRAWABLE, mode);\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (!pDraw) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync {\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync client->errorValue = did; \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return BadDrawable;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync }\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (pDraw->type == UNDRAWABLE_WINDOW)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return BadMatch;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync }
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SECURITY_VERIFY_GEOMETRABLE(pDraw, did, client, mode)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync {\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pDraw = (DrawablePtr) SecurityLookupIDByClass(client, did, \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync RC_DRAWABLE, mode);\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (!pDraw) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync {\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync client->errorValue = did; \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return BadDrawable;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync }\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync }
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SECURITY_VERIFY_GC(pGC, rid, client, mode)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pGC = (GC *) SecurityLookupIDByType(client, rid, RT_GC, mode);\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (!pGC)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync {\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync client->errorValue = rid;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return (BadGC);\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync }
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define VERIFY_DRAWABLE(pDraw, did, client)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync SECURITY_VERIFY_DRAWABLE(pDraw, did, client, SecurityUnknownAccess)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define VERIFY_GEOMETRABLE(pDraw, did, client)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync SECURITY_VERIFY_GEOMETRABLE(pDraw, did, client, SecurityUnknownAccess)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define VERIFY_GC(pGC, rid, client)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync SECURITY_VERIFY_GC(pGC, rid, client, SecurityUnknownAccess)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#else /* not XACE */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define VERIFY_DRAWABLE(pDraw, did, client)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (client->lastDrawableID == did)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pDraw = client->lastDrawable;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync else \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync {\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pDraw = (DrawablePtr) LookupIDByClass(did, RC_DRAWABLE);\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (!pDraw) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync {\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync client->errorValue = did; \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return BadDrawable;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync }\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (pDraw->type == UNDRAWABLE_WINDOW)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return BadMatch;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync }
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define VERIFY_GEOMETRABLE(pDraw, did, client)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (client->lastDrawableID == did)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pDraw = client->lastDrawable;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync else \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync {\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pDraw = (DrawablePtr) LookupIDByClass(did, RC_DRAWABLE);\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (!pDraw) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync {\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync client->errorValue = did; \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return BadDrawable;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync }\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync }
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define VERIFY_GC(pGC, rid, client)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (client->lastGCID == rid)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pGC = client->lastGC;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync else\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pGC = (GC *)LookupIDByType(rid, RT_GC);\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (!pGC)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync {\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync client->errorValue = rid;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return (BadGC);\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync }
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SECURITY_VERIFY_DRAWABLE(pDraw, did, client, mode)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync VERIFY_DRAWABLE(pDraw, did, client)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SECURITY_VERIFY_GEOMETRABLE(pDraw, did, client, mode)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync VERIFY_GEOMETRABLE(pDraw, did, client)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SECURITY_VERIFY_GC(pGC, rid, client, mode)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync VERIFY_GC(pGC, rid, client)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif /* XACE */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/*
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * We think that most hardware implementations of DBE will want
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * LookupID*(dbe_back_buffer_id) to return the window structure that the
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * id is a back buffer for. Since both front and back buffers will
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * return the same structure, you need to be able to distinguish
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * somewhere what kind of buffer (front/back) was being asked for, so
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * that ddx can render to the right place. That's the problem that the
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * following code solves. Note: we couldn't embed this in the LookupID*
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * functions because the VALIDATE_DRAWABLE_AND_GC macro often circumvents
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * those functions by checking a one-element cache. That's why we're
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * mucking with VALIDATE_DRAWABLE_AND_GC.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * If you put -DNEED_DBE_BUF_BITS into PervasiveDBEDefines, the window
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * structure will have two additional bits defined, srcBuffer and
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * dstBuffer, and their values will be maintained via the macros
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * SET_DBE_DSTBUF and SET_DBE_SRCBUF (below). If you also
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * put -DNEED_DBE_BUF_VALIDATE into PervasiveDBEDefines, the function
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * DbeValidateBuffer will be called any time the bits change to give you
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * a chance to do some setup. See the DBE code for more details on this
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * function. We put in these levels of conditionality so that you can do
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * just what you need to do, and no more. If neither of these defines
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * are used, the bits won't be there, and VALIDATE_DRAWABLE_AND_GC will
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * be unchanged. dpw
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#if defined(NEED_DBE_BUF_BITS)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SET_DBE_DSTBUF(_pDraw, _drawID) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync SET_DBE_BUF(_pDraw, _drawID, dstBuffer, TRUE)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SET_DBE_SRCBUF(_pDraw, _drawID) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync SET_DBE_BUF(_pDraw, _drawID, srcBuffer, FALSE)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#if defined (NEED_DBE_BUF_VALIDATE)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SET_DBE_BUF(_pDraw, _drawID, _whichBuffer, _dstbuf) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (_pDraw->type == DRAWABLE_WINDOW)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync {\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int thisbuf = (_pDraw->id == _drawID);\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (thisbuf != ((WindowPtr)_pDraw)->_whichBuffer)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync {\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((WindowPtr)_pDraw)->_whichBuffer = thisbuf;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DbeValidateBuffer((WindowPtr)_pDraw, _drawID, _dstbuf);\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync }\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync }
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#else /* want buffer bits, but don't need to call DbeValidateBuffer */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SET_DBE_BUF(_pDraw, _drawID, _whichBuffer, _dstbuf) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (_pDraw->type == DRAWABLE_WINDOW)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync {\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((WindowPtr)_pDraw)->_whichBuffer = (_pDraw->id == _drawID);\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync }
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif /* NEED_DBE_BUF_VALIDATE */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#else /* don't want buffer bits in window */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SET_DBE_DSTBUF(_pDraw, _drawID) /**/
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SET_DBE_SRCBUF(_pDraw, _drawID) /**/
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif /* NEED_DBE_BUF_BITS */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define VALIDATE_DRAWABLE_AND_GC(drawID, pDraw, pGC, client)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if ((stuff->gc == INVALID) || (client->lastGCID != stuff->gc) ||\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (client->lastDrawableID != drawID))\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync {\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync SECURITY_VERIFY_GEOMETRABLE(pDraw, drawID, client, SecurityWriteAccess);\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync SECURITY_VERIFY_GC(pGC, stuff->gc, client, SecurityReadAccess);\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if ((pGC->depth != pDraw->depth) ||\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (pGC->pScreen != pDraw->pScreen))\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return (BadMatch);\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync client->lastDrawable = pDraw;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync client->lastDrawableID = drawID;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync client->lastGC = pGC;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync client->lastGCID = stuff->gc;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync }\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync else\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync {\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pGC = client->lastGC;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pDraw = client->lastDrawable;\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync }\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync SET_DBE_DSTBUF(pDraw, drawID);\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (pGC->serialNumber != pDraw->serialNumber)\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ValidateGC(pDraw, pGC);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define WriteReplyToClient(pClient, size, pReply) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if ((pClient)->swapped) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (*ReplySwapVector[((xReq *)(pClient)->requestBuffer)->reqType]) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (pClient, (int)(size), pReply); \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync else (void) WriteToClient(pClient, (int)(size), (char *)(pReply)); }
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define WriteSwappedDataToClient(pClient, size, pbuf) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if ((pClient)->swapped) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (*(pClient)->pSwapReplyFunc)(pClient, (int)(size), pbuf); \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync else (void) WriteToClient (pClient, (int)(size), (char *)(pbuf));
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _TimeStamp *TimeStampPtr;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifndef _XTYPEDEF_CLIENTPTR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _Client *ClientPtr; /* also in misc.h */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define _XTYPEDEF_CLIENTPTR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _WorkQueue *WorkQueuePtr;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern ClientPtr requestingClient;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern ClientPtr *clients;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern ClientPtr serverClient;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int currentMaxClients;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern char dispatchExceptionAtReset;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef int HWEventQueueType;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef HWEventQueueType* HWEventQueuePtr;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern HWEventQueuePtr checkForInput[2];
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _TimeStamp {
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CARD32 months; /* really ~49.7 days */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CARD32 milliseconds;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync} TimeStamp;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* dispatch.c */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void SetInputCheck(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync HWEventQueuePtr /*c0*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync HWEventQueuePtr /*c1*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void CloseDownClient(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void UpdateCurrentTime(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void UpdateCurrentTimeIf(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void InitSelections(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void FlushClientCaches(XID /*id*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int dixDestroyPixmap(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer /*value*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync XID /*pid*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void CloseDownRetainedResources(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void InitClient(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /*i*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer /*ospriv*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern ClientPtr NextAvailableClient(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer /*ospriv*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void SendErrorToClient(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned int /*majorCode*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned int /*minorCode*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync XID /*resId*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /*errorCode*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void DeleteWindowFromAnySelections(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr /*pWin*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void MarkClientException(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int GetGeometry(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xGetGeometryReply* /* wa */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int SendConnSetup(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync char* /*reason*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int DoGetImage(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /*format*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Drawable /*drawable*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /*x*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /*y*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /*width*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /*height*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Mask /*planemask*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xGetImageReply ** /*im_return*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#if defined(DDXBEFORERESET)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void ddxBeforeReset (void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* dixutils.c */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void CopyISOLatin1Lowered(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned char * /*dest*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned char * /*source*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /*length*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int CompareISOLatin1Lowered(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned char * /*a*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int alen,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned char * /*b*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int blen);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifdef XACE
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern WindowPtr SecurityLookupWindow(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync XID /*rid*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Mask /*access_mode*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern pointer SecurityLookupDrawable(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync XID /*rid*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Mask /*access_mode*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern WindowPtr LookupWindow(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync XID /*rid*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern pointer LookupDrawable(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync XID /*rid*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#else
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern WindowPtr LookupWindow(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync XID /*rid*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern pointer LookupDrawable(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync XID /*rid*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SecurityLookupWindow(rid, client, access_mode) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync LookupWindow(rid, client)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SecurityLookupDrawable(rid, client, access_mode) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync LookupDrawable(rid, client)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif /* XACE */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern ClientPtr LookupClient(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync XID /*rid*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void NoopDDA(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int AlterSaveSetForClient(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr /*pWin*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned /*mode*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Bool /*toRoot*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Bool /*remap*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void DeleteWindowFromAnySaveSet(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr /*pWin*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void BlockHandler(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer /*pTimeout*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer /*pReadmask*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void WakeupHandler(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /*result*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer /*pReadmask*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef void (* WakeupHandlerProcPtr)(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer /* blockData */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /* result */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer /* pReadmask */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern Bool RegisterBlockAndWakeupHandlers(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync BlockHandlerProcPtr /*blockHandler*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WakeupHandlerProcPtr /*wakeupHandler*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer /*blockData*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void RemoveBlockAndWakeupHandlers(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync BlockHandlerProcPtr /*blockHandler*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WakeupHandlerProcPtr /*wakeupHandler*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer /*blockData*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void InitBlockAndWakeupHandlers(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void ProcessWorkQueue(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void ProcessWorkQueueZombies(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern Bool QueueWorkProc(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Bool (* /*function*/)(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*clientUnused*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer /*closure*/),
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer /*closure*/
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef Bool (* ClientSleepProcPtr)(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer /*closure*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern Bool ClientSleep(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientSleepProcPtr /* function */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer /*closure*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifndef ___CLIENTSIGNAL_DEFINED___
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define ___CLIENTSIGNAL_DEFINED___
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern Bool ClientSignal(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif /* ___CLIENTSIGNAL_DEFINED___ */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void ClientWakeup(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern Bool ClientIsAsleep(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* atom.c */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern Atom MakeAtom(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync char * /*string*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned /*len*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Bool /*makeit*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern Bool ValidAtom(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Atom /*atom*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern char *NameForAtom(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Atom /*atom*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void AtomError(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void FreeAllAtoms(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void InitAtoms(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* main.c */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void SetVendorRelease(int release);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void SetVendorString(char *string);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* events.c */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void SetMaskForEvent(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Mask /* mask */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /* event */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern Bool IsParent(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr /* maybeparent */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr /* child */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern WindowPtr GetCurrentRootWindow(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern WindowPtr GetSpriteWindow(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void NoticeEventTime(xEventPtr /* xE */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void EnqueueEvent(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xEventPtr /* xE */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DeviceIntPtr /* device */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /* count */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void ComputeFreezes(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void CheckGrabForSyncs(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DeviceIntPtr /* dev */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Bool /* thisMode */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Bool /* otherMode */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void ActivatePointerGrab(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DeviceIntPtr /* mouse */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync GrabPtr /* grab */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync TimeStamp /* time */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Bool /* autoGrab */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void DeactivatePointerGrab(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DeviceIntPtr /* mouse */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void ActivateKeyboardGrab(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DeviceIntPtr /* keybd */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync GrabPtr /* grab */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync TimeStamp /* time */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Bool /* passive */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void DeactivateKeyboardGrab(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DeviceIntPtr /* keybd */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void AllowSome(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /* client */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync TimeStamp /* time */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DeviceIntPtr /* thisDev */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /* newState */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void ReleaseActiveGrabs(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr client);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int DeliverEventsToWindow(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr /* pWin */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xEventPtr /* pEvents */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /* count */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Mask /* filter */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync GrabPtr /* grab */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /* mskidx */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int DeliverDeviceEvents(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr /* pWin */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xEventPtr /* xE */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync GrabPtr /* grab */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr /* stopAt */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DeviceIntPtr /* dev */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /* count */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void DefineInitialRootWindow(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr /* win */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void WindowHasNewCursor(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr /* pWin */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern Bool CheckDeviceGrabs(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DeviceIntPtr /* device */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xEventPtr /* xE */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /* checkFirst */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /* count */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void DeliverFocusedEvent(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DeviceIntPtr /* keybd */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xEventPtr /* xE */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr /* window */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /* count */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void DeliverGrabbedEvent(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xEventPtr /* xE */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DeviceIntPtr /* thisDev */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Bool /* deactivateGrab */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /* count */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifdef XKB
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void FixKeyState(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xEvent * /* xE */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DeviceIntPtr /* keybd */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif /* XKB */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void RecalculateDeliverableEvents(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr /* pWin */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int OtherClientGone(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer /* value */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync XID /* id */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void DoFocusEvents(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DeviceIntPtr /* dev */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr /* fromWin */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr /* toWin */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /* mode */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int SetInputFocus(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /* client */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DeviceIntPtr /* dev */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Window /* focusID */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CARD8 /* revertTo */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Time /* ctime */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Bool /* followOK */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int GrabDevice(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /* client */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DeviceIntPtr /* dev */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned /* this_mode */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned /* other_mode */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Window /* grabWindow */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned /* ownerEvents */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Time /* ctime */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Mask /* mask */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CARD8 * /* status */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void InitEvents(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void CloseDownEvents(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void DeleteWindowFromAnyEvents(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr /* pWin */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Bool /* freeResources */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern Mask EventMaskForClient(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr /* pWin */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /* client */);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int DeliverEvents(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr /*pWin*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xEventPtr /*xE*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /*count*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr /*otherParent*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void WriteEventsToClient(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*pClient*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /*count*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xEventPtr /*events*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int TryClientEvents(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr /*client*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xEventPtr /*pEvents*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /*count*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Mask /*mask*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Mask /*filter*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync GrabPtr /*grab*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void WindowsRestructured(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifdef PANORAMIX
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifdef RANDR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncScreenRestructured (ScreenPtr pScreen);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void ResetClientPrivates(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int AllocateClientPrivateIndex(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern Bool AllocateClientPrivate(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /*index*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned /*amount*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/*
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * callback manager stuff
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifndef _XTYPEDEF_CALLBACKLISTPTR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _CallbackList *CallbackListPtr; /* also in misc.h */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define _XTYPEDEF_CALLBACKLISTPTR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef void (*CallbackProcPtr) (
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CallbackListPtr *, pointer, pointer);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef Bool (*AddCallbackProcPtr) (
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CallbackListPtr *, CallbackProcPtr, pointer);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef Bool (*DeleteCallbackProcPtr) (
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CallbackListPtr *, CallbackProcPtr, pointer);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef void (*CallCallbacksProcPtr) (
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CallbackListPtr *, pointer);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef void (*DeleteCallbackListProcPtr) (
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CallbackListPtr *);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _CallbackProcs {
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync AddCallbackProcPtr AddCallback;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DeleteCallbackProcPtr DeleteCallback;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CallCallbacksProcPtr CallCallbacks;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DeleteCallbackListProcPtr DeleteCallbackList;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync} CallbackFuncsRec, *CallbackFuncsPtr;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern Bool CreateCallbackList(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CallbackListPtr * /*pcbl*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CallbackFuncsPtr /*cbfuncs*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern Bool AddCallback(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CallbackListPtr * /*pcbl*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CallbackProcPtr /*callback*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer /*data*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern Bool DeleteCallback(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CallbackListPtr * /*pcbl*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CallbackProcPtr /*callback*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer /*data*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void CallCallbacks(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CallbackListPtr * /*pcbl*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer /*call_data*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void DeleteCallbackList(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CallbackListPtr * /*pcbl*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void InitCallbackManager(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/*
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * ServerGrabCallback stuff
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern CallbackListPtr ServerGrabCallback;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef enum {SERVER_GRABBED, SERVER_UNGRABBED,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CLIENT_PERVIOUS, CLIENT_IMPERVIOUS } ServerGrabState;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct {
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr client;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ServerGrabState grabstate;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync} ServerGrabInfoRec;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/*
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * EventCallback stuff
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern CallbackListPtr EventCallback;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct {
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ClientPtr client;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xEventPtr events;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int count;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync} EventInfoRec;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/*
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * DeviceEventCallback stuff
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern CallbackListPtr DeviceEventCallback;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct {
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xEventPtr events;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int count;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync} DeviceEventInfoRec;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/*
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * SelectionCallback stuff
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern CallbackListPtr SelectionCallback;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef enum {
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync SelectionSetOwner,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync SelectionWindowDestroy,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync SelectionClientClose
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync} SelectionCallbackKind;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct {
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync struct _Selection *selection;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync SelectionCallbackKind kind;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync} SelectionInfoRec;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* strcasecmp.c */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#if NEED_STRCASECMP
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define strcasecmp xstrcasecmp
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int xstrcasecmp(char *s1, char *s2);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* ffs.c */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int ffs(int i);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif /* DIX_H */