1706f2543Smrg/*********************************************************** 2706f2543Smrg 3706f2543SmrgCopyright 1987, 1998 The Open Group 4706f2543Smrg 5706f2543SmrgPermission to use, copy, modify, distribute, and sell this software and its 6706f2543Smrgdocumentation for any purpose is hereby granted without fee, provided that 7706f2543Smrgthe above copyright notice appear in all copies and that both that 8706f2543Smrgcopyright notice and this permission notice appear in supporting 9706f2543Smrgdocumentation. 10706f2543Smrg 11706f2543SmrgThe above copyright notice and this permission notice shall be included in 12706f2543Smrgall copies or substantial portions of the Software. 13706f2543Smrg 14706f2543SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15706f2543SmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16706f2543SmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17706f2543SmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 18706f2543SmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19706f2543SmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20706f2543Smrg 21706f2543SmrgExcept as contained in this notice, the name of The Open Group shall not be 22706f2543Smrgused in advertising or otherwise to promote the sale, use or other dealings 23706f2543Smrgin this Software without prior written authorization from The Open Group. 24706f2543Smrg 25706f2543Smrg 26706f2543SmrgCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. 27706f2543Smrg 28706f2543Smrg All Rights Reserved 29706f2543Smrg 30706f2543SmrgPermission to use, copy, modify, and distribute this software and its 31706f2543Smrgdocumentation for any purpose and without fee is hereby granted, 32706f2543Smrgprovided that the above copyright notice appear in all copies and that 33706f2543Smrgboth that copyright notice and this permission notice appear in 34706f2543Smrgsupporting documentation, and that the name of Digital not be 35706f2543Smrgused in advertising or publicity pertaining to distribution of the 36706f2543Smrgsoftware without specific, written prior permission. 37706f2543Smrg 38706f2543SmrgDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 39706f2543SmrgALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL 40706f2543SmrgDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 41706f2543SmrgANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 42706f2543SmrgWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 43706f2543SmrgARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 44706f2543SmrgSOFTWARE. 45706f2543Smrg 46706f2543Smrg******************************************************************/ 47706f2543Smrg 48706f2543Smrg#ifndef DIX_H 49706f2543Smrg#define DIX_H 50706f2543Smrg 51706f2543Smrg#include "callback.h" 52706f2543Smrg#include "gc.h" 53706f2543Smrg#include "window.h" 54706f2543Smrg#include "input.h" 55706f2543Smrg#include "cursor.h" 56706f2543Smrg#include "geext.h" 57706f2543Smrg#include "events.h" 58706f2543Smrg#include <X11/extensions/XI.h> 59706f2543Smrg 60706f2543Smrg#define EARLIER -1 61706f2543Smrg#define SAMETIME 0 62706f2543Smrg#define LATER 1 63706f2543Smrg 64706f2543Smrg#define NullClient ((ClientPtr) 0) 65706f2543Smrg#define REQUEST(type) \ 66706f2543Smrg type *stuff = (type *)client->requestBuffer 67706f2543Smrg 68706f2543Smrg 69706f2543Smrg#define REQUEST_SIZE_MATCH(req)\ 70706f2543Smrg if ((sizeof(req) >> 2) != client->req_len)\ 71706f2543Smrg return(BadLength) 72706f2543Smrg 73706f2543Smrg#define REQUEST_AT_LEAST_SIZE(req) \ 74706f2543Smrg if ((sizeof(req) >> 2) > client->req_len )\ 75706f2543Smrg return(BadLength) 76706f2543Smrg 77706f2543Smrg#define REQUEST_AT_LEAST_EXTRA_SIZE(req, extra) \ 78706f2543Smrg if (((sizeof(req) + ((uint64_t) extra)) >> 2) > client->req_len ) \ 79706f2543Smrg return(BadLength) 80706f2543Smrg 81706f2543Smrg#define REQUEST_FIXED_SIZE(req, n)\ 82706f2543Smrg if (((sizeof(req) >> 2) > client->req_len) || \ 83706f2543Smrg (((n) >> 2) >= client->req_len) || \ 84706f2543Smrg ((((uint64_t) sizeof(req) + (n) + 3) >> 2) != (uint64_t) client->req_len)) \ 85706f2543Smrg return(BadLength) 86706f2543Smrg 87706f2543Smrg#define LEGAL_NEW_RESOURCE(id,client)\ 88706f2543Smrg if (!LegalNewID(id,client)) \ 89706f2543Smrg {\ 90706f2543Smrg client->errorValue = id;\ 91706f2543Smrg return BadIDChoice;\ 92706f2543Smrg } 93706f2543Smrg 94706f2543Smrg#define VALIDATE_DRAWABLE_AND_GC(drawID, pDraw, mode)\ 95706f2543Smrg {\ 96706f2543Smrg int rc = dixLookupDrawable(&(pDraw), drawID, client, M_ANY, mode);\ 97706f2543Smrg if (rc != Success)\ 98706f2543Smrg return rc;\ 99706f2543Smrg rc = dixLookupGC(&(pGC), stuff->gc, client, DixUseAccess);\ 100706f2543Smrg if (rc != Success)\ 101706f2543Smrg return rc;\ 102706f2543Smrg if ((pGC->depth != pDraw->depth) || (pGC->pScreen != pDraw->pScreen))\ 103706f2543Smrg return BadMatch;\ 104706f2543Smrg }\ 105706f2543Smrg if (pGC->serialNumber != pDraw->serialNumber)\ 106706f2543Smrg ValidateGC(pDraw, pGC); 107706f2543Smrg 108706f2543Smrg 109706f2543Smrg#define WriteReplyToClient(pClient, size, pReply) { \ 110706f2543Smrg if ((pClient)->swapped) \ 111706f2543Smrg (*ReplySwapVector[((xReq *)(pClient)->requestBuffer)->reqType]) \ 112706f2543Smrg (pClient, (int)(size), pReply); \ 113706f2543Smrg else (void) WriteToClient(pClient, (int)(size), (char *)(pReply)); } 114706f2543Smrg 115706f2543Smrg#define WriteSwappedDataToClient(pClient, size, pbuf) \ 116706f2543Smrg if ((pClient)->swapped) \ 117706f2543Smrg (*(pClient)->pSwapReplyFunc)(pClient, (int)(size), pbuf); \ 118706f2543Smrg else (void) WriteToClient (pClient, (int)(size), (char *)(pbuf)); 119706f2543Smrg 120706f2543Smrgtypedef struct _TimeStamp *TimeStampPtr; 121706f2543Smrg 122706f2543Smrg#ifndef _XTYPEDEF_CLIENTPTR 123706f2543Smrgtypedef struct _Client *ClientPtr; /* also in misc.h */ 124706f2543Smrg#define _XTYPEDEF_CLIENTPTR 125706f2543Smrg#endif 126706f2543Smrg 127706f2543Smrgtypedef struct _WorkQueue *WorkQueuePtr; 128706f2543Smrg 129706f2543Smrgextern _X_EXPORT ClientPtr clients[MAXCLIENTS]; 130706f2543Smrgextern _X_EXPORT ClientPtr serverClient; 131706f2543Smrgextern _X_EXPORT int currentMaxClients; 132706f2543Smrgextern _X_EXPORT char dispatchExceptionAtReset; 133706f2543Smrg 134706f2543Smrgtypedef int HWEventQueueType; 135706f2543Smrgtypedef HWEventQueueType* HWEventQueuePtr; 136706f2543Smrg 137706f2543Smrgextern _X_EXPORT HWEventQueuePtr checkForInput[2]; 138706f2543Smrg 139706f2543Smrgtypedef struct _TimeStamp { 140706f2543Smrg CARD32 months; /* really ~49.7 days */ 141706f2543Smrg CARD32 milliseconds; 142706f2543Smrg} TimeStamp; 143706f2543Smrg 144706f2543Smrg/* dispatch.c */ 145706f2543Smrg 146706f2543Smrgextern _X_EXPORT void SetInputCheck( 147706f2543Smrg HWEventQueuePtr /*c0*/, 148706f2543Smrg HWEventQueuePtr /*c1*/); 149706f2543Smrg 150706f2543Smrgextern _X_EXPORT void CloseDownClient( 151706f2543Smrg ClientPtr /*client*/); 152706f2543Smrg 153706f2543Smrgextern _X_EXPORT void UpdateCurrentTime(void); 154706f2543Smrg 155706f2543Smrgextern _X_EXPORT void UpdateCurrentTimeIf(void); 156706f2543Smrg 157706f2543Smrgextern _X_EXPORT int dixDestroyPixmap( 158706f2543Smrg pointer /*value*/, 159706f2543Smrg XID /*pid*/); 160706f2543Smrg 161706f2543Smrgextern _X_EXPORT void InitClient( 162706f2543Smrg ClientPtr /*client*/, 163706f2543Smrg int /*i*/, 164706f2543Smrg pointer /*ospriv*/); 165706f2543Smrg 166706f2543Smrgextern _X_EXPORT ClientPtr NextAvailableClient( 167706f2543Smrg pointer /*ospriv*/); 168706f2543Smrg 169706f2543Smrgextern _X_EXPORT void SendErrorToClient( 170706f2543Smrg ClientPtr /*client*/, 171706f2543Smrg unsigned int /*majorCode*/, 172706f2543Smrg unsigned int /*minorCode*/, 173706f2543Smrg XID /*resId*/, 174706f2543Smrg int /*errorCode*/); 175706f2543Smrg 176706f2543Smrgextern _X_EXPORT void MarkClientException( 177706f2543Smrg ClientPtr /*client*/); 178706f2543Smrg 179706f2543Smrgextern _X_HIDDEN Bool CreateConnectionBlock(void); 180706f2543Smrg/* dixutils.c */ 181706f2543Smrg 182706f2543Smrgextern _X_EXPORT int CompareISOLatin1Lowered( 183706f2543Smrg unsigned char * /*a*/, 184706f2543Smrg int alen, 185706f2543Smrg unsigned char * /*b*/, 186706f2543Smrg int blen); 187706f2543Smrg 188706f2543Smrgextern _X_EXPORT int dixLookupWindow( 189706f2543Smrg WindowPtr *result, 190706f2543Smrg XID id, 191706f2543Smrg ClientPtr client, 192706f2543Smrg Mask access_mode); 193706f2543Smrg 194706f2543Smrgextern _X_EXPORT int dixLookupDrawable( 195706f2543Smrg DrawablePtr *result, 196706f2543Smrg XID id, 197706f2543Smrg ClientPtr client, 198706f2543Smrg Mask type_mask, 199706f2543Smrg Mask access_mode); 200706f2543Smrg 201706f2543Smrgextern _X_EXPORT int dixLookupGC( 202706f2543Smrg GCPtr *result, 203706f2543Smrg XID id, 204706f2543Smrg ClientPtr client, 205706f2543Smrg Mask access_mode); 206706f2543Smrg 207706f2543Smrgextern _X_EXPORT int dixLookupFontable( 208706f2543Smrg FontPtr *result, 209706f2543Smrg XID id, 210706f2543Smrg ClientPtr client, 211706f2543Smrg Mask access_mode); 212706f2543Smrg 213706f2543Smrgextern _X_EXPORT int dixLookupClient( 214706f2543Smrg ClientPtr *result, 215706f2543Smrg XID id, 216706f2543Smrg ClientPtr client, 217706f2543Smrg Mask access_mode); 218706f2543Smrg 219706f2543Smrgextern _X_EXPORT void NoopDDA(void); 220706f2543Smrg 221706f2543Smrgextern _X_EXPORT int AlterSaveSetForClient( 222706f2543Smrg ClientPtr /*client*/, 223706f2543Smrg WindowPtr /*pWin*/, 224706f2543Smrg unsigned /*mode*/, 225706f2543Smrg Bool /*toRoot*/, 226706f2543Smrg Bool /*map*/); 227706f2543Smrg 228706f2543Smrgextern _X_EXPORT void DeleteWindowFromAnySaveSet( 229706f2543Smrg WindowPtr /*pWin*/); 230706f2543Smrg 231706f2543Smrgextern _X_EXPORT void BlockHandler( 232706f2543Smrg pointer /*pTimeout*/, 233706f2543Smrg pointer /*pReadmask*/); 234706f2543Smrg 235706f2543Smrgextern _X_EXPORT void WakeupHandler( 236706f2543Smrg int /*result*/, 237706f2543Smrg pointer /*pReadmask*/); 238706f2543Smrg 239706f2543Smrgvoid 240706f2543SmrgEnableLimitedSchedulingLatency(void); 241706f2543Smrg 242706f2543Smrgvoid 243706f2543SmrgDisableLimitedSchedulingLatency(void); 244706f2543Smrg 245706f2543Smrgtypedef void (* WakeupHandlerProcPtr)( 246706f2543Smrg pointer /* blockData */, 247706f2543Smrg int /* result */, 248706f2543Smrg pointer /* pReadmask */); 249706f2543Smrg 250706f2543Smrgextern _X_EXPORT Bool RegisterBlockAndWakeupHandlers( 251706f2543Smrg BlockHandlerProcPtr /*blockHandler*/, 252706f2543Smrg WakeupHandlerProcPtr /*wakeupHandler*/, 253706f2543Smrg pointer /*blockData*/); 254706f2543Smrg 255706f2543Smrgextern _X_EXPORT void RemoveBlockAndWakeupHandlers( 256706f2543Smrg BlockHandlerProcPtr /*blockHandler*/, 257706f2543Smrg WakeupHandlerProcPtr /*wakeupHandler*/, 258706f2543Smrg pointer /*blockData*/); 259706f2543Smrg 260706f2543Smrgextern _X_EXPORT void InitBlockAndWakeupHandlers(void); 261706f2543Smrg 262706f2543Smrgextern _X_EXPORT void ProcessWorkQueue(void); 263706f2543Smrg 264706f2543Smrgextern _X_EXPORT void ProcessWorkQueueZombies(void); 265706f2543Smrg 266706f2543Smrgextern _X_EXPORT Bool QueueWorkProc( 267706f2543Smrg Bool (* /*function*/)( 268706f2543Smrg ClientPtr /*clientUnused*/, 269706f2543Smrg pointer /*closure*/), 270706f2543Smrg ClientPtr /*client*/, 271706f2543Smrg pointer /*closure*/ 272706f2543Smrg); 273706f2543Smrg 274706f2543Smrgtypedef Bool (* ClientSleepProcPtr)( 275706f2543Smrg ClientPtr /*client*/, 276706f2543Smrg pointer /*closure*/); 277706f2543Smrg 278706f2543Smrgextern _X_EXPORT Bool ClientSleep( 279706f2543Smrg ClientPtr /*client*/, 280706f2543Smrg ClientSleepProcPtr /* function */, 281706f2543Smrg pointer /*closure*/); 282706f2543Smrg 283706f2543Smrg#ifndef ___CLIENTSIGNAL_DEFINED___ 284706f2543Smrg#define ___CLIENTSIGNAL_DEFINED___ 285706f2543Smrgextern _X_EXPORT Bool ClientSignal( 286706f2543Smrg ClientPtr /*client*/); 287706f2543Smrg#endif /* ___CLIENTSIGNAL_DEFINED___ */ 288706f2543Smrg 289706f2543Smrgextern _X_EXPORT void ClientWakeup( 290706f2543Smrg ClientPtr /*client*/); 291706f2543Smrg 292706f2543Smrgextern _X_EXPORT Bool ClientIsAsleep( 293706f2543Smrg ClientPtr /*client*/); 294706f2543Smrg 295706f2543Smrg/* atom.c */ 296706f2543Smrg 297706f2543Smrgextern _X_EXPORT Atom MakeAtom( 298706f2543Smrg const char * /*string*/, 299706f2543Smrg unsigned /*len*/, 300706f2543Smrg Bool /*makeit*/); 301706f2543Smrg 302706f2543Smrgextern _X_EXPORT Bool ValidAtom( 303706f2543Smrg Atom /*atom*/); 304706f2543Smrg 305706f2543Smrgextern _X_EXPORT const char *NameForAtom( 306706f2543Smrg Atom /*atom*/); 307706f2543Smrg 308706f2543Smrgextern _X_EXPORT void AtomError(void) _X_NORETURN; 309706f2543Smrg 310706f2543Smrgextern _X_EXPORT void FreeAllAtoms(void); 311706f2543Smrg 312706f2543Smrgextern _X_EXPORT void InitAtoms(void); 313706f2543Smrg 314706f2543Smrg/* main.c */ 315706f2543Smrg 316706f2543Smrgextern _X_EXPORT void SetVendorRelease(int release); 317706f2543Smrg 318706f2543Smrgextern _X_EXPORT void SetVendorString(char *string); 319706f2543Smrg 320706f2543Smrg/* events.c */ 321706f2543Smrg 322706f2543Smrgextern void SetMaskForEvent( 323706f2543Smrg int /* deviceid */, 324706f2543Smrg Mask /* mask */, 325706f2543Smrg int /* event */); 326706f2543Smrg 327706f2543Smrgextern _X_EXPORT void ConfineToShape( 328706f2543Smrg DeviceIntPtr /* pDev */, 329706f2543Smrg RegionPtr /* shape */, 330706f2543Smrg int* /* px */, 331706f2543Smrg int* /* py */); 332706f2543Smrg 333706f2543Smrgextern _X_EXPORT Bool IsParent( 334706f2543Smrg WindowPtr /* maybeparent */, 335706f2543Smrg WindowPtr /* child */); 336706f2543Smrg 337706f2543Smrgextern _X_EXPORT WindowPtr GetCurrentRootWindow(DeviceIntPtr pDev); 338706f2543Smrg 339706f2543Smrgextern _X_EXPORT WindowPtr GetSpriteWindow(DeviceIntPtr pDev); 340706f2543Smrg 341706f2543Smrg 342706f2543Smrgextern _X_EXPORT void NoticeEventTime(InternalEvent *ev); 343706f2543Smrg 344706f2543Smrgextern void EnqueueEvent( 345706f2543Smrg InternalEvent * /* ev */, 346706f2543Smrg DeviceIntPtr /* device */); 347706f2543Smrg 348706f2543Smrgextern void ActivatePointerGrab( 349706f2543Smrg DeviceIntPtr /* mouse */, 350706f2543Smrg GrabPtr /* grab */, 351706f2543Smrg TimeStamp /* time */, 352706f2543Smrg Bool /* autoGrab */); 353706f2543Smrg 354706f2543Smrgextern void DeactivatePointerGrab( 355706f2543Smrg DeviceIntPtr /* mouse */); 356706f2543Smrg 357706f2543Smrgextern void ActivateKeyboardGrab( 358706f2543Smrg DeviceIntPtr /* keybd */, 359706f2543Smrg GrabPtr /* grab */, 360706f2543Smrg TimeStamp /* time */, 361706f2543Smrg Bool /* passive */); 362706f2543Smrg 363706f2543Smrgextern void DeactivateKeyboardGrab( 364706f2543Smrg DeviceIntPtr /* keybd */); 365706f2543Smrg 366706f2543Smrgextern BOOL ActivateFocusInGrab( 367706f2543Smrg DeviceIntPtr /* dev */, 368706f2543Smrg WindowPtr /* old */, 369706f2543Smrg WindowPtr /* win */); 370706f2543Smrg 371706f2543Smrgextern void AllowSome( 372706f2543Smrg ClientPtr /* client */, 373706f2543Smrg TimeStamp /* time */, 374706f2543Smrg DeviceIntPtr /* thisDev */, 375706f2543Smrg int /* newState */); 376706f2543Smrg 377706f2543Smrgextern void ReleaseActiveGrabs( 378706f2543Smrg ClientPtr client); 379706f2543Smrg 380706f2543Smrgextern GrabPtr CheckPassiveGrabsOnWindow( 381706f2543Smrg WindowPtr /* pWin */, 382706f2543Smrg DeviceIntPtr /* device */, 383706f2543Smrg DeviceEvent * /* event */, 384706f2543Smrg BOOL /* checkCore */, 385706f2543Smrg BOOL /* activate */); 386706f2543Smrg 387706f2543Smrgextern _X_EXPORT int DeliverEventsToWindow( 388706f2543Smrg DeviceIntPtr /* pWin */, 389706f2543Smrg WindowPtr /* pWin */, 390706f2543Smrg xEventPtr /* pEvents */, 391706f2543Smrg int /* count */, 392706f2543Smrg Mask /* filter */, 393706f2543Smrg GrabPtr /* grab */); 394706f2543Smrg 395706f2543Smrgextern int DeliverDeviceEvents( 396706f2543Smrg WindowPtr /* pWin */, 397706f2543Smrg InternalEvent* /* event */, 398706f2543Smrg GrabPtr /* grab */, 399706f2543Smrg WindowPtr /* stopAt */, 400706f2543Smrg DeviceIntPtr /* dev */); 401706f2543Smrg 402706f2543Smrgextern void InitializeSprite( 403706f2543Smrg DeviceIntPtr /* pDev */, 404706f2543Smrg WindowPtr /* pWin */); 405706f2543Smrg 406706f2543Smrgextern void UpdateSpriteForScreen( 407706f2543Smrg DeviceIntPtr /* pDev */, 408706f2543Smrg ScreenPtr /* pScreen */); 409706f2543Smrg 410706f2543Smrgextern _X_EXPORT void WindowHasNewCursor( 411706f2543Smrg WindowPtr /* pWin */); 412706f2543Smrg 413706f2543Smrgextern Bool CheckDeviceGrabs( 414706f2543Smrg DeviceIntPtr /* device */, 415706f2543Smrg DeviceEvent* /* event */, 416706f2543Smrg WindowPtr /* ancestor */); 417706f2543Smrg 418706f2543Smrgextern void DeliverFocusedEvent( 419706f2543Smrg DeviceIntPtr /* keybd */, 420706f2543Smrg InternalEvent* /* event */, 421706f2543Smrg WindowPtr /* window */); 422706f2543Smrg 423706f2543Smrgextern void DeliverGrabbedEvent( 424706f2543Smrg InternalEvent* /* event */, 425706f2543Smrg DeviceIntPtr /* thisDev */, 426706f2543Smrg Bool /* deactivateGrab */); 427706f2543Smrg 428706f2543Smrgextern void FixKeyState( 429706f2543Smrg DeviceEvent* /* event */, 430706f2543Smrg DeviceIntPtr /* keybd */); 431706f2543Smrg 432706f2543Smrgextern void RecalculateDeliverableEvents( 433706f2543Smrg WindowPtr /* pWin */); 434706f2543Smrg 435706f2543Smrgextern _X_EXPORT int OtherClientGone( 436706f2543Smrg pointer /* value */, 437706f2543Smrg XID /* id */); 438706f2543Smrg 439706f2543Smrgextern void DoFocusEvents( 440706f2543Smrg DeviceIntPtr /* dev */, 441706f2543Smrg WindowPtr /* fromWin */, 442706f2543Smrg WindowPtr /* toWin */, 443706f2543Smrg int /* mode */); 444706f2543Smrg 445706f2543Smrgextern int SetInputFocus( 446706f2543Smrg ClientPtr /* client */, 447706f2543Smrg DeviceIntPtr /* dev */, 448706f2543Smrg Window /* focusID */, 449706f2543Smrg CARD8 /* revertTo */, 450706f2543Smrg Time /* ctime */, 451706f2543Smrg Bool /* followOK */); 452706f2543Smrg 453706f2543Smrgextern int GrabDevice( 454706f2543Smrg ClientPtr /* client */, 455706f2543Smrg DeviceIntPtr /* dev */, 456706f2543Smrg unsigned /* this_mode */, 457706f2543Smrg unsigned /* other_mode */, 458706f2543Smrg Window /* grabWindow */, 459706f2543Smrg unsigned /* ownerEvents */, 460706f2543Smrg Time /* ctime */, 461706f2543Smrg GrabMask* /* mask */, 462706f2543Smrg int /* grabtype */, 463706f2543Smrg Cursor /* curs */, 464706f2543Smrg Window /* confineToWin */, 465706f2543Smrg CARD8 * /* status */); 466706f2543Smrg 467706f2543Smrgextern void InitEvents(void); 468706f2543Smrg 469706f2543Smrgextern void CloseDownEvents(void); 470706f2543Smrg 471706f2543Smrgextern void DeleteWindowFromAnyEvents( 472706f2543Smrg WindowPtr /* pWin */, 473706f2543Smrg Bool /* freeResources */); 474706f2543Smrg 475706f2543Smrg 476706f2543Smrgextern Mask EventMaskForClient( 477706f2543Smrg WindowPtr /* pWin */, 478706f2543Smrg ClientPtr /* client */); 479706f2543Smrg 480706f2543Smrg 481706f2543Smrg 482706f2543Smrgextern _X_EXPORT int DeliverEvents( 483706f2543Smrg WindowPtr /*pWin*/, 484706f2543Smrg xEventPtr /*xE*/, 485706f2543Smrg int /*count*/, 486706f2543Smrg WindowPtr /*otherParent*/); 487706f2543Smrg 488706f2543Smrgextern Bool CheckMotion( 489706f2543Smrg DeviceEvent* /* ev */, 490706f2543Smrg DeviceIntPtr /* pDev */); 491706f2543Smrg 492706f2543Smrgextern _X_EXPORT void WriteEventsToClient( 493706f2543Smrg ClientPtr /*pClient*/, 494706f2543Smrg int /*count*/, 495706f2543Smrg xEventPtr /*events*/); 496706f2543Smrg 497706f2543Smrgextern _X_EXPORT int TryClientEvents( 498706f2543Smrg ClientPtr /*client*/, 499706f2543Smrg DeviceIntPtr /* device */, 500706f2543Smrg xEventPtr /*pEvents*/, 501706f2543Smrg int /*count*/, 502706f2543Smrg Mask /*mask*/, 503706f2543Smrg Mask /*filter*/, 504706f2543Smrg GrabPtr /*grab*/); 505706f2543Smrg 506706f2543Smrgextern _X_EXPORT void WindowsRestructured(void); 507706f2543Smrg 508706f2543Smrgextern int SetClientPointer( 509706f2543Smrg ClientPtr /* client */, 510706f2543Smrg DeviceIntPtr /* device */); 511706f2543Smrg 512706f2543Smrgextern _X_EXPORT DeviceIntPtr PickPointer( 513706f2543Smrg ClientPtr /* client */); 514706f2543Smrg 515706f2543Smrgextern _X_EXPORT DeviceIntPtr PickKeyboard( 516706f2543Smrg ClientPtr /* client */); 517706f2543Smrg 518706f2543Smrgextern Bool IsInterferingGrab( 519706f2543Smrg ClientPtr /* client */, 520706f2543Smrg DeviceIntPtr /* dev */, 521706f2543Smrg xEvent* /* events */); 522706f2543Smrg 523706f2543Smrg#ifdef PANORAMIX 524706f2543Smrgextern _X_EXPORT void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff); 525706f2543Smrg#endif 526706f2543Smrg 527706f2543Smrg#ifdef RANDR 528706f2543Smrgextern _X_EXPORT void 529706f2543SmrgScreenRestructured (ScreenPtr pScreen); 530706f2543Smrg#endif 531706f2543Smrg 532706f2543Smrg#ifndef HAVE_FFS 533706f2543Smrgextern _X_EXPORT int ffs(int i); 534706f2543Smrg#endif 535706f2543Smrg 536706f2543Smrg 537706f2543Smrg/* 538706f2543Smrg * ServerGrabCallback stuff 539706f2543Smrg */ 540706f2543Smrg 541706f2543Smrgextern _X_EXPORT CallbackListPtr ServerGrabCallback; 542706f2543Smrg 543706f2543Smrgtypedef enum {SERVER_GRABBED, SERVER_UNGRABBED, 544706f2543Smrg CLIENT_PERVIOUS, CLIENT_IMPERVIOUS } ServerGrabState; 545706f2543Smrg 546706f2543Smrgtypedef struct { 547706f2543Smrg ClientPtr client; 548706f2543Smrg ServerGrabState grabstate; 549706f2543Smrg} ServerGrabInfoRec; 550706f2543Smrg 551706f2543Smrg/* 552706f2543Smrg * EventCallback stuff 553706f2543Smrg */ 554706f2543Smrg 555706f2543Smrgextern _X_EXPORT CallbackListPtr EventCallback; 556706f2543Smrg 557706f2543Smrgtypedef struct { 558706f2543Smrg ClientPtr client; 559706f2543Smrg xEventPtr events; 560706f2543Smrg int count; 561706f2543Smrg} EventInfoRec; 562706f2543Smrg 563706f2543Smrg/* 564706f2543Smrg * DeviceEventCallback stuff 565706f2543Smrg */ 566706f2543Smrg 567706f2543Smrgextern _X_EXPORT CallbackListPtr DeviceEventCallback; 568706f2543Smrg 569706f2543Smrgtypedef struct { 570706f2543Smrg InternalEvent *event; 571706f2543Smrg DeviceIntPtr device; 572706f2543Smrg} DeviceEventInfoRec; 573706f2543Smrg 574706f2543Smrgextern int XItoCoreType(int xi_type); 575706f2543Smrgextern Bool DevHasCursor(DeviceIntPtr pDev); 576706f2543Smrgextern Bool _X_EXPORT IsPointerDevice( DeviceIntPtr dev); 577706f2543Smrgextern Bool _X_EXPORT IsKeyboardDevice(DeviceIntPtr dev); 578706f2543Smrgextern Bool IsPointerEvent(InternalEvent *event); 579706f2543Smrgextern _X_EXPORT Bool IsMaster(DeviceIntPtr dev); 580706f2543Smrg 581706f2543Smrgextern _X_HIDDEN void CopyKeyClass(DeviceIntPtr device, DeviceIntPtr master); 582706f2543Smrgextern _X_HIDDEN int CorePointerProc(DeviceIntPtr dev, int what); 583706f2543Smrgextern _X_HIDDEN int CoreKeyboardProc(DeviceIntPtr dev, int what); 584706f2543Smrg 585706f2543Smrg 586706f2543Smrg/* 587706f2543Smrg * These are deprecated compatibility functions and will be removed soon! 588706f2543Smrg * Please use the noted replacements instead. 589706f2543Smrg */ 590706f2543Smrg/* replaced by dixLookupWindow */ 591706f2543Smrgextern _X_EXPORT WindowPtr SecurityLookupWindow( 592706f2543Smrg XID id, 593706f2543Smrg ClientPtr client, 594706f2543Smrg Mask access_mode); 595706f2543Smrg/* replaced by dixLookupWindow */ 596706f2543Smrgextern _X_EXPORT WindowPtr LookupWindow( 597706f2543Smrg XID id, 598706f2543Smrg ClientPtr client); 599706f2543Smrg 600706f2543Smrg/* replaced by dixLookupDrawable */ 601706f2543Smrgextern _X_EXPORT pointer SecurityLookupDrawable( 602706f2543Smrg XID id, 603706f2543Smrg ClientPtr client, 604706f2543Smrg Mask access_mode); 605706f2543Smrg 606706f2543Smrg/* replaced by dixLookupDrawable */ 607706f2543Smrgextern _X_EXPORT pointer LookupDrawable( 608706f2543Smrg XID id, 609706f2543Smrg ClientPtr client); 610706f2543Smrg 611706f2543Smrg/* replaced by dixLookupClient */ 612706f2543Smrgextern _X_EXPORT ClientPtr LookupClient( 613706f2543Smrg XID id, 614706f2543Smrg ClientPtr client); 615706f2543Smrg 616706f2543Smrg#endif /* DIX_H */ 617