dix.h revision 4642e01f
105b261ecSmrg/*********************************************************** 205b261ecSmrg 305b261ecSmrgCopyright 1987, 1998 The Open Group 405b261ecSmrg 505b261ecSmrgPermission to use, copy, modify, distribute, and sell this software and its 605b261ecSmrgdocumentation for any purpose is hereby granted without fee, provided that 705b261ecSmrgthe above copyright notice appear in all copies and that both that 805b261ecSmrgcopyright notice and this permission notice appear in supporting 905b261ecSmrgdocumentation. 1005b261ecSmrg 1105b261ecSmrgThe above copyright notice and this permission notice shall be included in 1205b261ecSmrgall copies or substantial portions of the Software. 1305b261ecSmrg 1405b261ecSmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1505b261ecSmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1605b261ecSmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1705b261ecSmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 1805b261ecSmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 1905b261ecSmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2005b261ecSmrg 2105b261ecSmrgExcept as contained in this notice, the name of The Open Group shall not be 2205b261ecSmrgused in advertising or otherwise to promote the sale, use or other dealings 2305b261ecSmrgin this Software without prior written authorization from The Open Group. 2405b261ecSmrg 2505b261ecSmrg 2605b261ecSmrgCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. 2705b261ecSmrg 2805b261ecSmrg All Rights Reserved 2905b261ecSmrg 3005b261ecSmrgPermission to use, copy, modify, and distribute this software and its 3105b261ecSmrgdocumentation for any purpose and without fee is hereby granted, 3205b261ecSmrgprovided that the above copyright notice appear in all copies and that 3305b261ecSmrgboth that copyright notice and this permission notice appear in 3405b261ecSmrgsupporting documentation, and that the name of Digital not be 3505b261ecSmrgused in advertising or publicity pertaining to distribution of the 3605b261ecSmrgsoftware without specific, written prior permission. 3705b261ecSmrg 3805b261ecSmrgDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 3905b261ecSmrgALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL 4005b261ecSmrgDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 4105b261ecSmrgANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 4205b261ecSmrgWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 4305b261ecSmrgARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 4405b261ecSmrgSOFTWARE. 4505b261ecSmrg 4605b261ecSmrg******************************************************************/ 4705b261ecSmrg 4805b261ecSmrg#ifndef DIX_H 4905b261ecSmrg#define DIX_H 5005b261ecSmrg 5105b261ecSmrg#include "gc.h" 5205b261ecSmrg#include "window.h" 5305b261ecSmrg#include "input.h" 544642e01fSmrg#include "cursor.h" 554642e01fSmrg#include "geext.h" 564642e01fSmrg#include <X11/extensions/XI.h> 5705b261ecSmrg 5805b261ecSmrg#define EARLIER -1 5905b261ecSmrg#define SAMETIME 0 6005b261ecSmrg#define LATER 1 6105b261ecSmrg 6205b261ecSmrg#define NullClient ((ClientPtr) 0) 6305b261ecSmrg#define REQUEST(type) \ 644642e01fSmrg type *stuff = (type *)client->requestBuffer 6505b261ecSmrg 6605b261ecSmrg 6705b261ecSmrg#define REQUEST_SIZE_MATCH(req)\ 6805b261ecSmrg if ((sizeof(req) >> 2) != client->req_len)\ 6905b261ecSmrg return(BadLength) 7005b261ecSmrg 7105b261ecSmrg#define REQUEST_AT_LEAST_SIZE(req) \ 7205b261ecSmrg if ((sizeof(req) >> 2) > client->req_len )\ 7305b261ecSmrg return(BadLength) 7405b261ecSmrg 7505b261ecSmrg#define REQUEST_FIXED_SIZE(req, n)\ 7605b261ecSmrg if (((sizeof(req) >> 2) > client->req_len) || \ 7705b261ecSmrg (((sizeof(req) + (n) + 3) >> 2) != client->req_len)) \ 7805b261ecSmrg return(BadLength) 7905b261ecSmrg 8005b261ecSmrg#define LEGAL_NEW_RESOURCE(id,client)\ 8105b261ecSmrg if (!LegalNewID(id,client)) \ 8205b261ecSmrg {\ 8305b261ecSmrg client->errorValue = id;\ 8405b261ecSmrg return(BadIDChoice);\ 8505b261ecSmrg } 8605b261ecSmrg 874642e01fSmrg#define VALIDATE_DRAWABLE_AND_GC(drawID, pDraw, mode)\ 8805b261ecSmrg {\ 894642e01fSmrg int rc = dixLookupDrawable(&(pDraw), drawID, client, M_ANY, mode);\ 9005b261ecSmrg if (rc != Success)\ 9105b261ecSmrg return rc;\ 924642e01fSmrg rc = dixLookupGC(&(pGC), stuff->gc, client, DixUseAccess);\ 9305b261ecSmrg if (rc != Success)\ 9405b261ecSmrg return rc;\ 9505b261ecSmrg if ((pGC->depth != pDraw->depth) || (pGC->pScreen != pDraw->pScreen))\ 9605b261ecSmrg return (BadMatch);\ 9705b261ecSmrg }\ 9805b261ecSmrg if (pGC->serialNumber != pDraw->serialNumber)\ 9905b261ecSmrg ValidateGC(pDraw, pGC); 10005b261ecSmrg 10105b261ecSmrg 10205b261ecSmrg#define WriteReplyToClient(pClient, size, pReply) { \ 10305b261ecSmrg if ((pClient)->swapped) \ 10405b261ecSmrg (*ReplySwapVector[((xReq *)(pClient)->requestBuffer)->reqType]) \ 10505b261ecSmrg (pClient, (int)(size), pReply); \ 10605b261ecSmrg else (void) WriteToClient(pClient, (int)(size), (char *)(pReply)); } 10705b261ecSmrg 10805b261ecSmrg#define WriteSwappedDataToClient(pClient, size, pbuf) \ 10905b261ecSmrg if ((pClient)->swapped) \ 11005b261ecSmrg (*(pClient)->pSwapReplyFunc)(pClient, (int)(size), pbuf); \ 11105b261ecSmrg else (void) WriteToClient (pClient, (int)(size), (char *)(pbuf)); 11205b261ecSmrg 11305b261ecSmrgtypedef struct _TimeStamp *TimeStampPtr; 11405b261ecSmrg 11505b261ecSmrg#ifndef _XTYPEDEF_CLIENTPTR 11605b261ecSmrgtypedef struct _Client *ClientPtr; /* also in misc.h */ 11705b261ecSmrg#define _XTYPEDEF_CLIENTPTR 11805b261ecSmrg#endif 11905b261ecSmrg 12005b261ecSmrgtypedef struct _WorkQueue *WorkQueuePtr; 12105b261ecSmrg 1224642e01fSmrgextern ClientPtr clients[MAXCLIENTS]; 12305b261ecSmrgextern ClientPtr serverClient; 12405b261ecSmrgextern int currentMaxClients; 12505b261ecSmrgextern char dispatchExceptionAtReset; 12605b261ecSmrg 12705b261ecSmrgtypedef int HWEventQueueType; 12805b261ecSmrgtypedef HWEventQueueType* HWEventQueuePtr; 12905b261ecSmrg 13005b261ecSmrgextern HWEventQueuePtr checkForInput[2]; 13105b261ecSmrg 13205b261ecSmrgtypedef struct _TimeStamp { 13305b261ecSmrg CARD32 months; /* really ~49.7 days */ 13405b261ecSmrg CARD32 milliseconds; 13505b261ecSmrg} TimeStamp; 13605b261ecSmrg 13705b261ecSmrg/* dispatch.c */ 13805b261ecSmrg 13905b261ecSmrgextern void SetInputCheck( 14005b261ecSmrg HWEventQueuePtr /*c0*/, 14105b261ecSmrg HWEventQueuePtr /*c1*/); 14205b261ecSmrg 14305b261ecSmrgextern void CloseDownClient( 14405b261ecSmrg ClientPtr /*client*/); 14505b261ecSmrg 14605b261ecSmrgextern void UpdateCurrentTime(void); 14705b261ecSmrg 14805b261ecSmrgextern void UpdateCurrentTimeIf(void); 14905b261ecSmrg 15005b261ecSmrgextern int dixDestroyPixmap( 15105b261ecSmrg pointer /*value*/, 15205b261ecSmrg XID /*pid*/); 15305b261ecSmrg 15405b261ecSmrgextern void InitClient( 15505b261ecSmrg ClientPtr /*client*/, 15605b261ecSmrg int /*i*/, 15705b261ecSmrg pointer /*ospriv*/); 15805b261ecSmrg 15905b261ecSmrgextern ClientPtr NextAvailableClient( 16005b261ecSmrg pointer /*ospriv*/); 16105b261ecSmrg 16205b261ecSmrgextern void SendErrorToClient( 16305b261ecSmrg ClientPtr /*client*/, 16405b261ecSmrg unsigned int /*majorCode*/, 16505b261ecSmrg unsigned int /*minorCode*/, 16605b261ecSmrg XID /*resId*/, 16705b261ecSmrg int /*errorCode*/); 16805b261ecSmrg 16905b261ecSmrgextern void MarkClientException( 17005b261ecSmrg ClientPtr /*client*/); 17105b261ecSmrg 17205b261ecSmrgextern void ddxBeforeReset (void); 17305b261ecSmrg 17405b261ecSmrg/* dixutils.c */ 17505b261ecSmrg 17605b261ecSmrgextern void CopyISOLatin1Lowered( 17705b261ecSmrg unsigned char * /*dest*/, 17805b261ecSmrg unsigned char * /*source*/, 17905b261ecSmrg int /*length*/); 18005b261ecSmrg 18105b261ecSmrgextern int CompareISOLatin1Lowered( 18205b261ecSmrg unsigned char * /*a*/, 18305b261ecSmrg int alen, 18405b261ecSmrg unsigned char * /*b*/, 18505b261ecSmrg int blen); 18605b261ecSmrg 18705b261ecSmrgextern int dixLookupWindow( 18805b261ecSmrg WindowPtr *result, 18905b261ecSmrg XID id, 19005b261ecSmrg ClientPtr client, 19105b261ecSmrg Mask access_mode); 19205b261ecSmrg 19305b261ecSmrgextern int dixLookupDrawable( 19405b261ecSmrg DrawablePtr *result, 19505b261ecSmrg XID id, 19605b261ecSmrg ClientPtr client, 19705b261ecSmrg Mask type_mask, 19805b261ecSmrg Mask access_mode); 19905b261ecSmrg 20005b261ecSmrgextern int dixLookupGC( 20105b261ecSmrg GCPtr *result, 20205b261ecSmrg XID id, 20305b261ecSmrg ClientPtr client, 20405b261ecSmrg Mask access_mode); 20505b261ecSmrg 20605b261ecSmrgextern int dixLookupClient( 20705b261ecSmrg ClientPtr *result, 20805b261ecSmrg XID id, 20905b261ecSmrg ClientPtr client, 21005b261ecSmrg Mask access_mode); 21105b261ecSmrg 21205b261ecSmrgextern void NoopDDA(void); 21305b261ecSmrg 21405b261ecSmrgextern int AlterSaveSetForClient( 21505b261ecSmrg ClientPtr /*client*/, 21605b261ecSmrg WindowPtr /*pWin*/, 21705b261ecSmrg unsigned /*mode*/, 21805b261ecSmrg Bool /*toRoot*/, 2194642e01fSmrg Bool /*map*/); 22005b261ecSmrg 22105b261ecSmrgextern void DeleteWindowFromAnySaveSet( 22205b261ecSmrg WindowPtr /*pWin*/); 22305b261ecSmrg 22405b261ecSmrgextern void BlockHandler( 22505b261ecSmrg pointer /*pTimeout*/, 22605b261ecSmrg pointer /*pReadmask*/); 22705b261ecSmrg 22805b261ecSmrgextern void WakeupHandler( 22905b261ecSmrg int /*result*/, 23005b261ecSmrg pointer /*pReadmask*/); 23105b261ecSmrg 23205b261ecSmrgtypedef void (* WakeupHandlerProcPtr)( 23305b261ecSmrg pointer /* blockData */, 23405b261ecSmrg int /* result */, 23505b261ecSmrg pointer /* pReadmask */); 23605b261ecSmrg 23705b261ecSmrgextern Bool RegisterBlockAndWakeupHandlers( 23805b261ecSmrg BlockHandlerProcPtr /*blockHandler*/, 23905b261ecSmrg WakeupHandlerProcPtr /*wakeupHandler*/, 24005b261ecSmrg pointer /*blockData*/); 24105b261ecSmrg 24205b261ecSmrgextern void RemoveBlockAndWakeupHandlers( 24305b261ecSmrg BlockHandlerProcPtr /*blockHandler*/, 24405b261ecSmrg WakeupHandlerProcPtr /*wakeupHandler*/, 24505b261ecSmrg pointer /*blockData*/); 24605b261ecSmrg 24705b261ecSmrgextern void InitBlockAndWakeupHandlers(void); 24805b261ecSmrg 24905b261ecSmrgextern void ProcessWorkQueue(void); 25005b261ecSmrg 25105b261ecSmrgextern void ProcessWorkQueueZombies(void); 25205b261ecSmrg 25305b261ecSmrgextern Bool QueueWorkProc( 25405b261ecSmrg Bool (* /*function*/)( 25505b261ecSmrg ClientPtr /*clientUnused*/, 25605b261ecSmrg pointer /*closure*/), 25705b261ecSmrg ClientPtr /*client*/, 25805b261ecSmrg pointer /*closure*/ 25905b261ecSmrg); 26005b261ecSmrg 26105b261ecSmrgtypedef Bool (* ClientSleepProcPtr)( 26205b261ecSmrg ClientPtr /*client*/, 26305b261ecSmrg pointer /*closure*/); 26405b261ecSmrg 26505b261ecSmrgextern Bool ClientSleep( 26605b261ecSmrg ClientPtr /*client*/, 26705b261ecSmrg ClientSleepProcPtr /* function */, 26805b261ecSmrg pointer /*closure*/); 26905b261ecSmrg 27005b261ecSmrg#ifndef ___CLIENTSIGNAL_DEFINED___ 27105b261ecSmrg#define ___CLIENTSIGNAL_DEFINED___ 27205b261ecSmrgextern Bool ClientSignal( 27305b261ecSmrg ClientPtr /*client*/); 27405b261ecSmrg#endif /* ___CLIENTSIGNAL_DEFINED___ */ 27505b261ecSmrg 27605b261ecSmrgextern void ClientWakeup( 27705b261ecSmrg ClientPtr /*client*/); 27805b261ecSmrg 27905b261ecSmrgextern Bool ClientIsAsleep( 28005b261ecSmrg ClientPtr /*client*/); 28105b261ecSmrg 28205b261ecSmrg/* atom.c */ 28305b261ecSmrg 28405b261ecSmrgextern Atom MakeAtom( 28505b261ecSmrg char * /*string*/, 28605b261ecSmrg unsigned /*len*/, 28705b261ecSmrg Bool /*makeit*/); 28805b261ecSmrg 28905b261ecSmrgextern Bool ValidAtom( 29005b261ecSmrg Atom /*atom*/); 29105b261ecSmrg 29205b261ecSmrgextern char *NameForAtom( 29305b261ecSmrg Atom /*atom*/); 29405b261ecSmrg 29505b261ecSmrgextern void AtomError(void); 29605b261ecSmrg 29705b261ecSmrgextern void FreeAllAtoms(void); 29805b261ecSmrg 29905b261ecSmrgextern void InitAtoms(void); 30005b261ecSmrg 30105b261ecSmrg/* main.c */ 30205b261ecSmrg 30305b261ecSmrgextern void SetVendorRelease(int release); 30405b261ecSmrg 30505b261ecSmrgextern void SetVendorString(char *string); 30605b261ecSmrg 30705b261ecSmrg/* events.c */ 30805b261ecSmrg 30905b261ecSmrgextern void SetMaskForEvent( 3104642e01fSmrg int /* deviceid */, 31105b261ecSmrg Mask /* mask */, 31205b261ecSmrg int /* event */); 31305b261ecSmrg 3144642e01fSmrgextern void ConfineToShape( 3154642e01fSmrg DeviceIntPtr /* pDev */, 3164642e01fSmrg RegionPtr /* shape */, 3174642e01fSmrg int* /* px */, 3184642e01fSmrg int* /* py */); 31905b261ecSmrg 32005b261ecSmrgextern Bool IsParent( 32105b261ecSmrg WindowPtr /* maybeparent */, 32205b261ecSmrg WindowPtr /* child */); 32305b261ecSmrg 3244642e01fSmrgextern WindowPtr GetCurrentRootWindow(DeviceIntPtr pDev); 32505b261ecSmrg 3264642e01fSmrgextern WindowPtr GetSpriteWindow(DeviceIntPtr pDev); 32705b261ecSmrg 32805b261ecSmrg 32905b261ecSmrgextern void NoticeEventTime(xEventPtr /* xE */); 33005b261ecSmrg 33105b261ecSmrgextern void EnqueueEvent( 33205b261ecSmrg xEventPtr /* xE */, 33305b261ecSmrg DeviceIntPtr /* device */, 33405b261ecSmrg int /* count */); 33505b261ecSmrg 33605b261ecSmrgextern void ActivatePointerGrab( 33705b261ecSmrg DeviceIntPtr /* mouse */, 33805b261ecSmrg GrabPtr /* grab */, 33905b261ecSmrg TimeStamp /* time */, 34005b261ecSmrg Bool /* autoGrab */); 34105b261ecSmrg 34205b261ecSmrgextern void DeactivatePointerGrab( 34305b261ecSmrg DeviceIntPtr /* mouse */); 34405b261ecSmrg 34505b261ecSmrgextern void ActivateKeyboardGrab( 34605b261ecSmrg DeviceIntPtr /* keybd */, 34705b261ecSmrg GrabPtr /* grab */, 34805b261ecSmrg TimeStamp /* time */, 34905b261ecSmrg Bool /* passive */); 35005b261ecSmrg 35105b261ecSmrgextern void DeactivateKeyboardGrab( 35205b261ecSmrg DeviceIntPtr /* keybd */); 35305b261ecSmrg 35405b261ecSmrgextern void AllowSome( 35505b261ecSmrg ClientPtr /* client */, 35605b261ecSmrg TimeStamp /* time */, 35705b261ecSmrg DeviceIntPtr /* thisDev */, 3584642e01fSmrg int /* newState */, 3594642e01fSmrg Bool /* core */); 36005b261ecSmrg 36105b261ecSmrgextern void ReleaseActiveGrabs( 36205b261ecSmrg ClientPtr client); 36305b261ecSmrg 36405b261ecSmrgextern int DeliverEventsToWindow( 3654642e01fSmrg DeviceIntPtr /* pWin */, 36605b261ecSmrg WindowPtr /* pWin */, 36705b261ecSmrg xEventPtr /* pEvents */, 36805b261ecSmrg int /* count */, 36905b261ecSmrg Mask /* filter */, 37005b261ecSmrg GrabPtr /* grab */, 37105b261ecSmrg int /* mskidx */); 37205b261ecSmrg 37305b261ecSmrgextern int DeliverDeviceEvents( 37405b261ecSmrg WindowPtr /* pWin */, 37505b261ecSmrg xEventPtr /* xE */, 37605b261ecSmrg GrabPtr /* grab */, 37705b261ecSmrg WindowPtr /* stopAt */, 37805b261ecSmrg DeviceIntPtr /* dev */, 37905b261ecSmrg int /* count */); 38005b261ecSmrg 38105b261ecSmrgextern void DefineInitialRootWindow( 38205b261ecSmrg WindowPtr /* win */); 38305b261ecSmrg 3844642e01fSmrgextern void SetupSprite( 3854642e01fSmrg DeviceIntPtr /* pDev */, 3864642e01fSmrg ScreenPtr /* pScreen */); 3874642e01fSmrg 3884642e01fSmrgextern void InitializeSprite( 3894642e01fSmrg DeviceIntPtr /* pDev */, 3904642e01fSmrg WindowPtr /* pWin */); 3914642e01fSmrg 3924642e01fSmrgextern void UpdateSpriteForScreen( 3934642e01fSmrg DeviceIntPtr /* pDev */, 3944642e01fSmrg ScreenPtr /* pScreen */); 3954642e01fSmrg 39605b261ecSmrgextern void WindowHasNewCursor( 39705b261ecSmrg WindowPtr /* pWin */); 39805b261ecSmrg 39905b261ecSmrgextern Bool CheckDeviceGrabs( 40005b261ecSmrg DeviceIntPtr /* device */, 40105b261ecSmrg xEventPtr /* xE */, 40205b261ecSmrg int /* checkFirst */, 40305b261ecSmrg int /* count */); 40405b261ecSmrg 40505b261ecSmrgextern void DeliverFocusedEvent( 40605b261ecSmrg DeviceIntPtr /* keybd */, 40705b261ecSmrg xEventPtr /* xE */, 40805b261ecSmrg WindowPtr /* window */, 40905b261ecSmrg int /* count */); 41005b261ecSmrg 41105b261ecSmrgextern void DeliverGrabbedEvent( 41205b261ecSmrg xEventPtr /* xE */, 41305b261ecSmrg DeviceIntPtr /* thisDev */, 41405b261ecSmrg Bool /* deactivateGrab */, 41505b261ecSmrg int /* count */); 41605b261ecSmrg 41705b261ecSmrg#ifdef XKB 41805b261ecSmrgextern void FixKeyState( 41905b261ecSmrg xEvent * /* xE */, 42005b261ecSmrg DeviceIntPtr /* keybd */); 42105b261ecSmrg#endif /* XKB */ 42205b261ecSmrg 42305b261ecSmrgextern void RecalculateDeliverableEvents( 42405b261ecSmrg WindowPtr /* pWin */); 42505b261ecSmrg 42605b261ecSmrgextern int OtherClientGone( 42705b261ecSmrg pointer /* value */, 42805b261ecSmrg XID /* id */); 42905b261ecSmrg 43005b261ecSmrgextern void DoFocusEvents( 43105b261ecSmrg DeviceIntPtr /* dev */, 43205b261ecSmrg WindowPtr /* fromWin */, 43305b261ecSmrg WindowPtr /* toWin */, 43405b261ecSmrg int /* mode */); 43505b261ecSmrg 43605b261ecSmrgextern int SetInputFocus( 43705b261ecSmrg ClientPtr /* client */, 43805b261ecSmrg DeviceIntPtr /* dev */, 43905b261ecSmrg Window /* focusID */, 44005b261ecSmrg CARD8 /* revertTo */, 44105b261ecSmrg Time /* ctime */, 44205b261ecSmrg Bool /* followOK */); 44305b261ecSmrg 44405b261ecSmrgextern int GrabDevice( 44505b261ecSmrg ClientPtr /* client */, 44605b261ecSmrg DeviceIntPtr /* dev */, 44705b261ecSmrg unsigned /* this_mode */, 44805b261ecSmrg unsigned /* other_mode */, 44905b261ecSmrg Window /* grabWindow */, 45005b261ecSmrg unsigned /* ownerEvents */, 45105b261ecSmrg Time /* ctime */, 45205b261ecSmrg Mask /* mask */, 4534642e01fSmrg CARD8 * /* status */, 4544642e01fSmrg Bool /* coreGrab */); 45505b261ecSmrg 45605b261ecSmrgextern void InitEvents(void); 4574642e01fSmrgextern void InitSprite( 4584642e01fSmrg DeviceIntPtr /* pDev */, 4594642e01fSmrg Bool /* hasCursor */ 4604642e01fSmrg ); 46105b261ecSmrg 46205b261ecSmrgextern void CloseDownEvents(void); 46305b261ecSmrg 46405b261ecSmrgextern void DeleteWindowFromAnyEvents( 46505b261ecSmrg WindowPtr /* pWin */, 46605b261ecSmrg Bool /* freeResources */); 46705b261ecSmrg 46805b261ecSmrg 46905b261ecSmrgextern Mask EventMaskForClient( 47005b261ecSmrg WindowPtr /* pWin */, 47105b261ecSmrg ClientPtr /* client */); 47205b261ecSmrg 47305b261ecSmrg 47405b261ecSmrg 47505b261ecSmrgextern int DeliverEvents( 47605b261ecSmrg WindowPtr /*pWin*/, 47705b261ecSmrg xEventPtr /*xE*/, 47805b261ecSmrg int /*count*/, 47905b261ecSmrg WindowPtr /*otherParent*/); 48005b261ecSmrg 4814642e01fSmrgextern Bool 4824642e01fSmrgCheckMotion( 4834642e01fSmrg xEvent* /* xE */, 4844642e01fSmrg DeviceIntPtr /* pDev */); 48505b261ecSmrg 48605b261ecSmrgextern void WriteEventsToClient( 48705b261ecSmrg ClientPtr /*pClient*/, 48805b261ecSmrg int /*count*/, 48905b261ecSmrg xEventPtr /*events*/); 49005b261ecSmrg 49105b261ecSmrgextern int TryClientEvents( 49205b261ecSmrg ClientPtr /*client*/, 4934642e01fSmrg DeviceIntPtr /* device */, 49405b261ecSmrg xEventPtr /*pEvents*/, 49505b261ecSmrg int /*count*/, 49605b261ecSmrg Mask /*mask*/, 49705b261ecSmrg Mask /*filter*/, 49805b261ecSmrg GrabPtr /*grab*/); 49905b261ecSmrg 50005b261ecSmrgextern void WindowsRestructured(void); 50105b261ecSmrg 5024642e01fSmrgextern Bool SetClientPointer( 5034642e01fSmrg ClientPtr /* client */, 5044642e01fSmrg ClientPtr /* setter */, 5054642e01fSmrg DeviceIntPtr /* device */); 5064642e01fSmrg 5074642e01fSmrgextern DeviceIntPtr PickPointer( 5084642e01fSmrg ClientPtr /* client */); 5094642e01fSmrg 5104642e01fSmrgextern DeviceIntPtr PickKeyboard( 5114642e01fSmrg ClientPtr /* client */); 5124642e01fSmrg 5134642e01fSmrgextern Bool IsInterferingGrab( 5144642e01fSmrg ClientPtr /* client */, 5154642e01fSmrg DeviceIntPtr /* dev */, 5164642e01fSmrg xEvent* /* events */); 5174642e01fSmrg 51805b261ecSmrg#ifdef PANORAMIX 51905b261ecSmrgextern void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff); 52005b261ecSmrg#endif 52105b261ecSmrg 52205b261ecSmrg#ifdef RANDR 52305b261ecSmrgvoid 52405b261ecSmrgScreenRestructured (ScreenPtr pScreen); 52505b261ecSmrg#endif 52605b261ecSmrg 52705b261ecSmrgextern int ffs(int i); 52805b261ecSmrg 52905b261ecSmrg/* 53005b261ecSmrg * callback manager stuff 53105b261ecSmrg */ 53205b261ecSmrg 53305b261ecSmrg#ifndef _XTYPEDEF_CALLBACKLISTPTR 53405b261ecSmrgtypedef struct _CallbackList *CallbackListPtr; /* also in misc.h */ 53505b261ecSmrg#define _XTYPEDEF_CALLBACKLISTPTR 53605b261ecSmrg#endif 53705b261ecSmrg 53805b261ecSmrgtypedef void (*CallbackProcPtr) ( 53905b261ecSmrg CallbackListPtr *, pointer, pointer); 54005b261ecSmrg 54105b261ecSmrgextern Bool AddCallback( 54205b261ecSmrg CallbackListPtr * /*pcbl*/, 54305b261ecSmrg CallbackProcPtr /*callback*/, 54405b261ecSmrg pointer /*data*/); 54505b261ecSmrg 54605b261ecSmrgextern Bool DeleteCallback( 54705b261ecSmrg CallbackListPtr * /*pcbl*/, 54805b261ecSmrg CallbackProcPtr /*callback*/, 54905b261ecSmrg pointer /*data*/); 55005b261ecSmrg 55105b261ecSmrgextern void CallCallbacks( 55205b261ecSmrg CallbackListPtr * /*pcbl*/, 55305b261ecSmrg pointer /*call_data*/); 55405b261ecSmrg 55505b261ecSmrgextern void DeleteCallbackList( 55605b261ecSmrg CallbackListPtr * /*pcbl*/); 55705b261ecSmrg 55805b261ecSmrgextern void InitCallbackManager(void); 55905b261ecSmrg 56005b261ecSmrg/* 56105b261ecSmrg * ServerGrabCallback stuff 56205b261ecSmrg */ 56305b261ecSmrg 56405b261ecSmrgextern CallbackListPtr ServerGrabCallback; 56505b261ecSmrg 56605b261ecSmrgtypedef enum {SERVER_GRABBED, SERVER_UNGRABBED, 56705b261ecSmrg CLIENT_PERVIOUS, CLIENT_IMPERVIOUS } ServerGrabState; 56805b261ecSmrg 56905b261ecSmrgtypedef struct { 57005b261ecSmrg ClientPtr client; 57105b261ecSmrg ServerGrabState grabstate; 57205b261ecSmrg} ServerGrabInfoRec; 57305b261ecSmrg 57405b261ecSmrg/* 57505b261ecSmrg * EventCallback stuff 57605b261ecSmrg */ 57705b261ecSmrg 57805b261ecSmrgextern CallbackListPtr EventCallback; 57905b261ecSmrg 58005b261ecSmrgtypedef struct { 58105b261ecSmrg ClientPtr client; 58205b261ecSmrg xEventPtr events; 58305b261ecSmrg int count; 58405b261ecSmrg} EventInfoRec; 58505b261ecSmrg 58605b261ecSmrg/* 58705b261ecSmrg * DeviceEventCallback stuff 58805b261ecSmrg */ 58905b261ecSmrg 59005b261ecSmrgextern CallbackListPtr DeviceEventCallback; 59105b261ecSmrg 59205b261ecSmrgtypedef struct { 59305b261ecSmrg xEventPtr events; 59405b261ecSmrg int count; 59505b261ecSmrg} DeviceEventInfoRec; 59605b261ecSmrg 5974642e01fSmrgextern int XItoCoreType(int xi_type); 5984642e01fSmrgextern Bool DevHasCursor(DeviceIntPtr pDev); 5994642e01fSmrgextern Bool IsPointerDevice( DeviceIntPtr dev); 6004642e01fSmrgextern Bool IsKeyboardDevice(DeviceIntPtr dev); 6014642e01fSmrgextern Bool IsPointerEvent(xEvent* xE); 6024642e01fSmrg 60305b261ecSmrg/* 6044642e01fSmrg * These are deprecated compatibility functions and will be removed soon! 6054642e01fSmrg * Please use the noted replacements instead. 60605b261ecSmrg */ 6074642e01fSmrg/* replaced by dixLookupWindow */ 6084642e01fSmrgextern WindowPtr SecurityLookupWindow( 6094642e01fSmrg XID id, 6104642e01fSmrg ClientPtr client, 6114642e01fSmrg Mask access_mode); 6124642e01fSmrg/* replaced by dixLookupWindow */ 6134642e01fSmrgextern WindowPtr LookupWindow( 6144642e01fSmrg XID id, 6154642e01fSmrg ClientPtr client); 61605b261ecSmrg 6174642e01fSmrg/* replaced by dixLookupDrawable */ 6184642e01fSmrgextern pointer SecurityLookupDrawable( 6194642e01fSmrg XID id, 6204642e01fSmrg ClientPtr client, 6214642e01fSmrg Mask access_mode); 62205b261ecSmrg 6234642e01fSmrg/* replaced by dixLookupDrawable */ 6244642e01fSmrgextern pointer LookupDrawable( 6254642e01fSmrg XID id, 6264642e01fSmrg ClientPtr client); 62705b261ecSmrg 6284642e01fSmrg/* replaced by dixLookupClient */ 6294642e01fSmrgextern ClientPtr LookupClient( 6304642e01fSmrg XID id, 6314642e01fSmrg ClientPtr client); 63205b261ecSmrg 6334642e01fSmrg/* GE stuff */ 6344642e01fSmrgextern void SetGenericFilter(int extension, Mask* filters); 6354642e01fSmrgextern int ExtGrabDevice(ClientPtr client, 6364642e01fSmrg DeviceIntPtr dev, 6374642e01fSmrg int device_mode, 6384642e01fSmrg WindowPtr grabWindow, 6394642e01fSmrg WindowPtr confineTo, 6404642e01fSmrg TimeStamp ctime, 6414642e01fSmrg Bool ownerEvents, 6424642e01fSmrg CursorPtr cursor, 6434642e01fSmrg Mask xi_mask, 6444642e01fSmrg GenericMaskPtr ge_masks); 64505b261ecSmrg#endif /* DIX_H */ 646