dix.h revision b1d344b3
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 232b1d344b3Smrgvoid 233b1d344b3SmrgEnableLimitedSchedulingLatency(void); 234b1d344b3Smrg 235b1d344b3Smrgvoid 236b1d344b3SmrgDisableLimitedSchedulingLatency(void); 237b1d344b3Smrg 23805b261ecSmrgtypedef void (* WakeupHandlerProcPtr)( 23905b261ecSmrg pointer /* blockData */, 24005b261ecSmrg int /* result */, 24105b261ecSmrg pointer /* pReadmask */); 24205b261ecSmrg 24305b261ecSmrgextern Bool RegisterBlockAndWakeupHandlers( 24405b261ecSmrg BlockHandlerProcPtr /*blockHandler*/, 24505b261ecSmrg WakeupHandlerProcPtr /*wakeupHandler*/, 24605b261ecSmrg pointer /*blockData*/); 24705b261ecSmrg 24805b261ecSmrgextern void RemoveBlockAndWakeupHandlers( 24905b261ecSmrg BlockHandlerProcPtr /*blockHandler*/, 25005b261ecSmrg WakeupHandlerProcPtr /*wakeupHandler*/, 25105b261ecSmrg pointer /*blockData*/); 25205b261ecSmrg 25305b261ecSmrgextern void InitBlockAndWakeupHandlers(void); 25405b261ecSmrg 25505b261ecSmrgextern void ProcessWorkQueue(void); 25605b261ecSmrg 25705b261ecSmrgextern void ProcessWorkQueueZombies(void); 25805b261ecSmrg 25905b261ecSmrgextern Bool QueueWorkProc( 26005b261ecSmrg Bool (* /*function*/)( 26105b261ecSmrg ClientPtr /*clientUnused*/, 26205b261ecSmrg pointer /*closure*/), 26305b261ecSmrg ClientPtr /*client*/, 26405b261ecSmrg pointer /*closure*/ 26505b261ecSmrg); 26605b261ecSmrg 26705b261ecSmrgtypedef Bool (* ClientSleepProcPtr)( 26805b261ecSmrg ClientPtr /*client*/, 26905b261ecSmrg pointer /*closure*/); 27005b261ecSmrg 27105b261ecSmrgextern Bool ClientSleep( 27205b261ecSmrg ClientPtr /*client*/, 27305b261ecSmrg ClientSleepProcPtr /* function */, 27405b261ecSmrg pointer /*closure*/); 27505b261ecSmrg 27605b261ecSmrg#ifndef ___CLIENTSIGNAL_DEFINED___ 27705b261ecSmrg#define ___CLIENTSIGNAL_DEFINED___ 27805b261ecSmrgextern Bool ClientSignal( 27905b261ecSmrg ClientPtr /*client*/); 28005b261ecSmrg#endif /* ___CLIENTSIGNAL_DEFINED___ */ 28105b261ecSmrg 28205b261ecSmrgextern void ClientWakeup( 28305b261ecSmrg ClientPtr /*client*/); 28405b261ecSmrg 28505b261ecSmrgextern Bool ClientIsAsleep( 28605b261ecSmrg ClientPtr /*client*/); 28705b261ecSmrg 28805b261ecSmrg/* atom.c */ 28905b261ecSmrg 29005b261ecSmrgextern Atom MakeAtom( 29105b261ecSmrg char * /*string*/, 29205b261ecSmrg unsigned /*len*/, 29305b261ecSmrg Bool /*makeit*/); 29405b261ecSmrg 29505b261ecSmrgextern Bool ValidAtom( 29605b261ecSmrg Atom /*atom*/); 29705b261ecSmrg 29805b261ecSmrgextern char *NameForAtom( 29905b261ecSmrg Atom /*atom*/); 30005b261ecSmrg 30105b261ecSmrgextern void AtomError(void); 30205b261ecSmrg 30305b261ecSmrgextern void FreeAllAtoms(void); 30405b261ecSmrg 30505b261ecSmrgextern void InitAtoms(void); 30605b261ecSmrg 30705b261ecSmrg/* main.c */ 30805b261ecSmrg 30905b261ecSmrgextern void SetVendorRelease(int release); 31005b261ecSmrg 31105b261ecSmrgextern void SetVendorString(char *string); 31205b261ecSmrg 31305b261ecSmrg/* events.c */ 31405b261ecSmrg 31505b261ecSmrgextern void SetMaskForEvent( 3164642e01fSmrg int /* deviceid */, 31705b261ecSmrg Mask /* mask */, 31805b261ecSmrg int /* event */); 31905b261ecSmrg 3204642e01fSmrgextern void ConfineToShape( 3214642e01fSmrg DeviceIntPtr /* pDev */, 3224642e01fSmrg RegionPtr /* shape */, 3234642e01fSmrg int* /* px */, 3244642e01fSmrg int* /* py */); 32505b261ecSmrg 32605b261ecSmrgextern Bool IsParent( 32705b261ecSmrg WindowPtr /* maybeparent */, 32805b261ecSmrg WindowPtr /* child */); 32905b261ecSmrg 3304642e01fSmrgextern WindowPtr GetCurrentRootWindow(DeviceIntPtr pDev); 33105b261ecSmrg 3324642e01fSmrgextern WindowPtr GetSpriteWindow(DeviceIntPtr pDev); 33305b261ecSmrg 33405b261ecSmrg 33505b261ecSmrgextern void NoticeEventTime(xEventPtr /* xE */); 33605b261ecSmrg 33705b261ecSmrgextern void EnqueueEvent( 33805b261ecSmrg xEventPtr /* xE */, 33905b261ecSmrg DeviceIntPtr /* device */, 34005b261ecSmrg int /* count */); 34105b261ecSmrg 34205b261ecSmrgextern void ActivatePointerGrab( 34305b261ecSmrg DeviceIntPtr /* mouse */, 34405b261ecSmrg GrabPtr /* grab */, 34505b261ecSmrg TimeStamp /* time */, 34605b261ecSmrg Bool /* autoGrab */); 34705b261ecSmrg 34805b261ecSmrgextern void DeactivatePointerGrab( 34905b261ecSmrg DeviceIntPtr /* mouse */); 35005b261ecSmrg 35105b261ecSmrgextern void ActivateKeyboardGrab( 35205b261ecSmrg DeviceIntPtr /* keybd */, 35305b261ecSmrg GrabPtr /* grab */, 35405b261ecSmrg TimeStamp /* time */, 35505b261ecSmrg Bool /* passive */); 35605b261ecSmrg 35705b261ecSmrgextern void DeactivateKeyboardGrab( 35805b261ecSmrg DeviceIntPtr /* keybd */); 35905b261ecSmrg 36005b261ecSmrgextern void AllowSome( 36105b261ecSmrg ClientPtr /* client */, 36205b261ecSmrg TimeStamp /* time */, 36305b261ecSmrg DeviceIntPtr /* thisDev */, 3644642e01fSmrg int /* newState */, 3654642e01fSmrg Bool /* core */); 36605b261ecSmrg 36705b261ecSmrgextern void ReleaseActiveGrabs( 36805b261ecSmrg ClientPtr client); 36905b261ecSmrg 37005b261ecSmrgextern int DeliverEventsToWindow( 3714642e01fSmrg DeviceIntPtr /* pWin */, 37205b261ecSmrg WindowPtr /* pWin */, 37305b261ecSmrg xEventPtr /* pEvents */, 37405b261ecSmrg int /* count */, 37505b261ecSmrg Mask /* filter */, 37605b261ecSmrg GrabPtr /* grab */, 37705b261ecSmrg int /* mskidx */); 37805b261ecSmrg 37905b261ecSmrgextern int DeliverDeviceEvents( 38005b261ecSmrg WindowPtr /* pWin */, 38105b261ecSmrg xEventPtr /* xE */, 38205b261ecSmrg GrabPtr /* grab */, 38305b261ecSmrg WindowPtr /* stopAt */, 38405b261ecSmrg DeviceIntPtr /* dev */, 38505b261ecSmrg int /* count */); 38605b261ecSmrg 38705b261ecSmrgextern void DefineInitialRootWindow( 38805b261ecSmrg WindowPtr /* win */); 38905b261ecSmrg 3904642e01fSmrgextern void SetupSprite( 3914642e01fSmrg DeviceIntPtr /* pDev */, 3924642e01fSmrg ScreenPtr /* pScreen */); 3934642e01fSmrg 3944642e01fSmrgextern void InitializeSprite( 3954642e01fSmrg DeviceIntPtr /* pDev */, 3964642e01fSmrg WindowPtr /* pWin */); 3974642e01fSmrg 3984642e01fSmrgextern void UpdateSpriteForScreen( 3994642e01fSmrg DeviceIntPtr /* pDev */, 4004642e01fSmrg ScreenPtr /* pScreen */); 4014642e01fSmrg 40205b261ecSmrgextern void WindowHasNewCursor( 40305b261ecSmrg WindowPtr /* pWin */); 40405b261ecSmrg 40505b261ecSmrgextern Bool CheckDeviceGrabs( 40605b261ecSmrg DeviceIntPtr /* device */, 40705b261ecSmrg xEventPtr /* xE */, 40805b261ecSmrg int /* checkFirst */, 40905b261ecSmrg int /* count */); 41005b261ecSmrg 41105b261ecSmrgextern void DeliverFocusedEvent( 41205b261ecSmrg DeviceIntPtr /* keybd */, 41305b261ecSmrg xEventPtr /* xE */, 41405b261ecSmrg WindowPtr /* window */, 41505b261ecSmrg int /* count */); 41605b261ecSmrg 41705b261ecSmrgextern void DeliverGrabbedEvent( 41805b261ecSmrg xEventPtr /* xE */, 41905b261ecSmrg DeviceIntPtr /* thisDev */, 42005b261ecSmrg Bool /* deactivateGrab */, 42105b261ecSmrg int /* count */); 42205b261ecSmrg 42305b261ecSmrg#ifdef XKB 42405b261ecSmrgextern void FixKeyState( 42505b261ecSmrg xEvent * /* xE */, 42605b261ecSmrg DeviceIntPtr /* keybd */); 42705b261ecSmrg#endif /* XKB */ 42805b261ecSmrg 42905b261ecSmrgextern void RecalculateDeliverableEvents( 43005b261ecSmrg WindowPtr /* pWin */); 43105b261ecSmrg 43205b261ecSmrgextern int OtherClientGone( 43305b261ecSmrg pointer /* value */, 43405b261ecSmrg XID /* id */); 43505b261ecSmrg 43605b261ecSmrgextern void DoFocusEvents( 43705b261ecSmrg DeviceIntPtr /* dev */, 43805b261ecSmrg WindowPtr /* fromWin */, 43905b261ecSmrg WindowPtr /* toWin */, 44005b261ecSmrg int /* mode */); 44105b261ecSmrg 44205b261ecSmrgextern int SetInputFocus( 44305b261ecSmrg ClientPtr /* client */, 44405b261ecSmrg DeviceIntPtr /* dev */, 44505b261ecSmrg Window /* focusID */, 44605b261ecSmrg CARD8 /* revertTo */, 44705b261ecSmrg Time /* ctime */, 44805b261ecSmrg Bool /* followOK */); 44905b261ecSmrg 45005b261ecSmrgextern int GrabDevice( 45105b261ecSmrg ClientPtr /* client */, 45205b261ecSmrg DeviceIntPtr /* dev */, 45305b261ecSmrg unsigned /* this_mode */, 45405b261ecSmrg unsigned /* other_mode */, 45505b261ecSmrg Window /* grabWindow */, 45605b261ecSmrg unsigned /* ownerEvents */, 45705b261ecSmrg Time /* ctime */, 45805b261ecSmrg Mask /* mask */, 4594642e01fSmrg CARD8 * /* status */, 4604642e01fSmrg Bool /* coreGrab */); 46105b261ecSmrg 46205b261ecSmrgextern void InitEvents(void); 4634642e01fSmrgextern void InitSprite( 4644642e01fSmrg DeviceIntPtr /* pDev */, 4654642e01fSmrg Bool /* hasCursor */ 4664642e01fSmrg ); 46705b261ecSmrg 46805b261ecSmrgextern void CloseDownEvents(void); 46905b261ecSmrg 47005b261ecSmrgextern void DeleteWindowFromAnyEvents( 47105b261ecSmrg WindowPtr /* pWin */, 47205b261ecSmrg Bool /* freeResources */); 47305b261ecSmrg 47405b261ecSmrg 47505b261ecSmrgextern Mask EventMaskForClient( 47605b261ecSmrg WindowPtr /* pWin */, 47705b261ecSmrg ClientPtr /* client */); 47805b261ecSmrg 47905b261ecSmrg 48005b261ecSmrg 48105b261ecSmrgextern int DeliverEvents( 48205b261ecSmrg WindowPtr /*pWin*/, 48305b261ecSmrg xEventPtr /*xE*/, 48405b261ecSmrg int /*count*/, 48505b261ecSmrg WindowPtr /*otherParent*/); 48605b261ecSmrg 4874642e01fSmrgextern Bool 4884642e01fSmrgCheckMotion( 4894642e01fSmrg xEvent* /* xE */, 4904642e01fSmrg DeviceIntPtr /* pDev */); 49105b261ecSmrg 49205b261ecSmrgextern void WriteEventsToClient( 49305b261ecSmrg ClientPtr /*pClient*/, 49405b261ecSmrg int /*count*/, 49505b261ecSmrg xEventPtr /*events*/); 49605b261ecSmrg 49705b261ecSmrgextern int TryClientEvents( 49805b261ecSmrg ClientPtr /*client*/, 4994642e01fSmrg DeviceIntPtr /* device */, 50005b261ecSmrg xEventPtr /*pEvents*/, 50105b261ecSmrg int /*count*/, 50205b261ecSmrg Mask /*mask*/, 50305b261ecSmrg Mask /*filter*/, 50405b261ecSmrg GrabPtr /*grab*/); 50505b261ecSmrg 50605b261ecSmrgextern void WindowsRestructured(void); 50705b261ecSmrg 5084642e01fSmrgextern Bool SetClientPointer( 5094642e01fSmrg ClientPtr /* client */, 5104642e01fSmrg ClientPtr /* setter */, 5114642e01fSmrg DeviceIntPtr /* device */); 5124642e01fSmrg 5134642e01fSmrgextern DeviceIntPtr PickPointer( 5144642e01fSmrg ClientPtr /* client */); 5154642e01fSmrg 5164642e01fSmrgextern DeviceIntPtr PickKeyboard( 5174642e01fSmrg ClientPtr /* client */); 5184642e01fSmrg 5194642e01fSmrgextern Bool IsInterferingGrab( 5204642e01fSmrg ClientPtr /* client */, 5214642e01fSmrg DeviceIntPtr /* dev */, 5224642e01fSmrg xEvent* /* events */); 5234642e01fSmrg 52405b261ecSmrg#ifdef PANORAMIX 52505b261ecSmrgextern void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff); 52605b261ecSmrg#endif 52705b261ecSmrg 52805b261ecSmrg#ifdef RANDR 52905b261ecSmrgvoid 53005b261ecSmrgScreenRestructured (ScreenPtr pScreen); 53105b261ecSmrg#endif 53205b261ecSmrg 53305b261ecSmrgextern int ffs(int i); 53405b261ecSmrg 53505b261ecSmrg/* 53605b261ecSmrg * callback manager stuff 53705b261ecSmrg */ 53805b261ecSmrg 53905b261ecSmrg#ifndef _XTYPEDEF_CALLBACKLISTPTR 54005b261ecSmrgtypedef struct _CallbackList *CallbackListPtr; /* also in misc.h */ 54105b261ecSmrg#define _XTYPEDEF_CALLBACKLISTPTR 54205b261ecSmrg#endif 54305b261ecSmrg 54405b261ecSmrgtypedef void (*CallbackProcPtr) ( 54505b261ecSmrg CallbackListPtr *, pointer, pointer); 54605b261ecSmrg 54705b261ecSmrgextern Bool AddCallback( 54805b261ecSmrg CallbackListPtr * /*pcbl*/, 54905b261ecSmrg CallbackProcPtr /*callback*/, 55005b261ecSmrg pointer /*data*/); 55105b261ecSmrg 55205b261ecSmrgextern Bool DeleteCallback( 55305b261ecSmrg CallbackListPtr * /*pcbl*/, 55405b261ecSmrg CallbackProcPtr /*callback*/, 55505b261ecSmrg pointer /*data*/); 55605b261ecSmrg 55705b261ecSmrgextern void CallCallbacks( 55805b261ecSmrg CallbackListPtr * /*pcbl*/, 55905b261ecSmrg pointer /*call_data*/); 56005b261ecSmrg 56105b261ecSmrgextern void DeleteCallbackList( 56205b261ecSmrg CallbackListPtr * /*pcbl*/); 56305b261ecSmrg 56405b261ecSmrgextern void InitCallbackManager(void); 56505b261ecSmrg 56605b261ecSmrg/* 56705b261ecSmrg * ServerGrabCallback stuff 56805b261ecSmrg */ 56905b261ecSmrg 57005b261ecSmrgextern CallbackListPtr ServerGrabCallback; 57105b261ecSmrg 57205b261ecSmrgtypedef enum {SERVER_GRABBED, SERVER_UNGRABBED, 57305b261ecSmrg CLIENT_PERVIOUS, CLIENT_IMPERVIOUS } ServerGrabState; 57405b261ecSmrg 57505b261ecSmrgtypedef struct { 57605b261ecSmrg ClientPtr client; 57705b261ecSmrg ServerGrabState grabstate; 57805b261ecSmrg} ServerGrabInfoRec; 57905b261ecSmrg 58005b261ecSmrg/* 58105b261ecSmrg * EventCallback stuff 58205b261ecSmrg */ 58305b261ecSmrg 58405b261ecSmrgextern CallbackListPtr EventCallback; 58505b261ecSmrg 58605b261ecSmrgtypedef struct { 58705b261ecSmrg ClientPtr client; 58805b261ecSmrg xEventPtr events; 58905b261ecSmrg int count; 59005b261ecSmrg} EventInfoRec; 59105b261ecSmrg 59205b261ecSmrg/* 59305b261ecSmrg * DeviceEventCallback stuff 59405b261ecSmrg */ 59505b261ecSmrg 59605b261ecSmrgextern CallbackListPtr DeviceEventCallback; 59705b261ecSmrg 59805b261ecSmrgtypedef struct { 59905b261ecSmrg xEventPtr events; 60005b261ecSmrg int count; 60105b261ecSmrg} DeviceEventInfoRec; 60205b261ecSmrg 6034642e01fSmrgextern int XItoCoreType(int xi_type); 6044642e01fSmrgextern Bool DevHasCursor(DeviceIntPtr pDev); 6054642e01fSmrgextern Bool IsPointerDevice( DeviceIntPtr dev); 6064642e01fSmrgextern Bool IsKeyboardDevice(DeviceIntPtr dev); 6074642e01fSmrgextern Bool IsPointerEvent(xEvent* xE); 6084642e01fSmrg 60905b261ecSmrg/* 6104642e01fSmrg * These are deprecated compatibility functions and will be removed soon! 6114642e01fSmrg * Please use the noted replacements instead. 61205b261ecSmrg */ 6134642e01fSmrg/* replaced by dixLookupWindow */ 6144642e01fSmrgextern WindowPtr SecurityLookupWindow( 6154642e01fSmrg XID id, 6164642e01fSmrg ClientPtr client, 6174642e01fSmrg Mask access_mode); 6184642e01fSmrg/* replaced by dixLookupWindow */ 6194642e01fSmrgextern WindowPtr LookupWindow( 6204642e01fSmrg XID id, 6214642e01fSmrg ClientPtr client); 62205b261ecSmrg 6234642e01fSmrg/* replaced by dixLookupDrawable */ 6244642e01fSmrgextern pointer SecurityLookupDrawable( 6254642e01fSmrg XID id, 6264642e01fSmrg ClientPtr client, 6274642e01fSmrg Mask access_mode); 62805b261ecSmrg 6294642e01fSmrg/* replaced by dixLookupDrawable */ 6304642e01fSmrgextern pointer LookupDrawable( 6314642e01fSmrg XID id, 6324642e01fSmrg ClientPtr client); 63305b261ecSmrg 6344642e01fSmrg/* replaced by dixLookupClient */ 6354642e01fSmrgextern ClientPtr LookupClient( 6364642e01fSmrg XID id, 6374642e01fSmrg ClientPtr client); 63805b261ecSmrg 6394642e01fSmrg/* GE stuff */ 6404642e01fSmrgextern void SetGenericFilter(int extension, Mask* filters); 6414642e01fSmrgextern int ExtGrabDevice(ClientPtr client, 6424642e01fSmrg DeviceIntPtr dev, 6434642e01fSmrg int device_mode, 6444642e01fSmrg WindowPtr grabWindow, 6454642e01fSmrg WindowPtr confineTo, 6464642e01fSmrg TimeStamp ctime, 6474642e01fSmrg Bool ownerEvents, 6484642e01fSmrg CursorPtr cursor, 6494642e01fSmrg Mask xi_mask, 6504642e01fSmrg GenericMaskPtr ge_masks); 65105b261ecSmrg#endif /* DIX_H */ 652