1 /***********************************************************
3 Copyright (c) 1987 X Consortium
5 Permission is hereby granted, free of charge, to any person obtaining a copy
6 of this software and associated documentation files (the "Software"), to deal
7 in the Software without restriction, including without limitation the rights
8 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 copies of the Software, and to permit persons to whom the Software is
10 furnished to do so, subject to the following conditions:
12 The above copyright notice and this permission notice shall be included in
13 all copies or substantial portions of the Software.
15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
19 AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22 Except as contained in this notice, the name of the X Consortium shall not be
23 used in advertising or otherwise to promote the sale, use or other dealings
24 in this Software without prior written authorization from the X Consortium.
27 Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
31 Permission to use, copy, modify, and distribute this software and its
32 documentation for any purpose and without fee is hereby granted,
33 provided that the above copyright notice appear in all copies and that
34 both that copyright notice and this permission notice appear in
35 supporting documentation, and that the name of Digital not be
36 used in advertising or publicity pertaining to distribution of the
37 software without specific, written prior permission.
39 DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
40 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
41 DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
42 ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
43 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
44 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
47 ******************************************************************/
48 /* $XConsortium: dix.h /main/44 1996/12/15 21:24:57 rws $ */
49 /* $XFree86: xc/programs/Xserver/include/dix.h,v 3.7 1996/12/31 04:17:46 dawes Exp $ */
62 #define NullClient ((ClientPtr) 0)
63 #define REQUEST(type) \
64 register type *stuff = (type *)client->requestBuffer
67 #define REQUEST_SIZE_MATCH(req)\
68 if ((sizeof(req) >> 2) != client->req_len)\
71 #define REQUEST_AT_LEAST_SIZE(req) \
72 if ((sizeof(req) >> 2) > client->req_len )\
75 #define REQUEST_FIXED_SIZE(req, n)\
76 if (((sizeof(req) >> 2) > client->req_len) || \
77 (((sizeof(req) + (n) + 3) >> 2) != client->req_len)) \
80 #define LEGAL_NEW_RESOURCE(id,client)\
81 if (!LegalNewID(id,client)) \
83 client->errorValue = id;\
87 /* XXX if you are using this macro, you are probably not generating Match
88 * errors where appropriate */
89 #define LOOKUP_DRAWABLE(did, client)\
90 ((client->lastDrawableID == did) ? \
91 client->lastDrawable : (DrawablePtr)LookupDrawable(did, client))
95 #define SECURITY_VERIFY_DRAWABLE(pDraw, did, client, mode)\
96 if (client->lastDrawableID == did && !client->trustLevel)\
97 pDraw = client->lastDrawable;\
100 pDraw = (DrawablePtr) SecurityLookupIDByClass(client, did, \
104 client->errorValue = did; \
107 if (pDraw->type == UNDRAWABLE_WINDOW)\
111 #define SECURITY_VERIFY_GEOMETRABLE(pDraw, did, client, mode)\
112 if (client->lastDrawableID == did && !client->trustLevel)\
113 pDraw = client->lastDrawable;\
116 pDraw = (DrawablePtr) SecurityLookupIDByClass(client, did, \
120 client->errorValue = did; \
125 #define SECURITY_VERIFY_GC(pGC, rid, client, mode)\
126 if (client->lastGCID == rid && !client->trustLevel)\
127 pGC = client->lastGC;\
129 pGC = (GC *) SecurityLookupIDByType(client, rid, RT_GC, mode);\
132 client->errorValue = rid;\
136 #define VERIFY_DRAWABLE(pDraw, did, client)\
137 SECURITY_VERIFY_DRAWABLE(pDraw, did, client, SecurityUnknownAccess)
139 #define VERIFY_GEOMETRABLE(pDraw, did, client)\
140 SECURITY_VERIFY_GEOMETRABLE(pDraw, did, client, SecurityUnknownAccess)
142 #define VERIFY_GC(pGC, rid, client)\
143 SECURITY_VERIFY_GC(pGC, rid, client, SecurityUnknownAccess)
145 #else /* not XCSECURITY */
147 #define VERIFY_DRAWABLE(pDraw, did, client)\
148 if (client->lastDrawableID == did)\
149 pDraw = client->lastDrawable;\
152 pDraw = (DrawablePtr) LookupIDByClass(did, RC_DRAWABLE);\
155 client->errorValue = did; \
158 if (pDraw->type == UNDRAWABLE_WINDOW)\
162 #define VERIFY_GEOMETRABLE(pDraw, did, client)\
163 if (client->lastDrawableID == did)\
164 pDraw = client->lastDrawable;\
167 pDraw = (DrawablePtr) LookupIDByClass(did, RC_DRAWABLE);\
170 client->errorValue = did; \
175 #define VERIFY_GC(pGC, rid, client)\
176 if (client->lastGCID == rid)\
177 pGC = client->lastGC;\
179 pGC = (GC *)LookupIDByType(rid, RT_GC);\
182 client->errorValue = rid;\
186 #define SECURITY_VERIFY_DRAWABLE(pDraw, did, client, mode)\
187 VERIFY_DRAWABLE(pDraw, did, client)
189 #define SECURITY_VERIFY_GEOMETRABLE(pDraw, did, client, mode)\
190 VERIFY_GEOMETRABLE(pDraw, did, client)
192 #define SECURITY_VERIFY_GC(pGC, rid, client, mode)\
193 VERIFY_GC(pGC, rid, client)
195 #endif /* XCSECURITY */
198 * We think that most hardware implementations of DBE will want
199 * LookupID*(dbe_back_buffer_id) to return the window structure that the
200 * id is a back buffer for. Since both front and back buffers will
201 * return the same structure, you need to be able to distinguish
202 * somewhere what kind of buffer (front/back) was being asked for, so
203 * that ddx can render to the right place. That's the problem that the
204 * following code solves. Note: we couldn't embed this in the LookupID*
205 * functions because the VALIDATE_DRAWABLE_AND_GC macro often circumvents
206 * those functions by checking a one-element cache. That's why we're
207 * mucking with VALIDATE_DRAWABLE_AND_GC.
209 * If you put -DNEED_DBE_BUF_BITS into PervasiveDBEDefines, the window
210 * structure will have two additional bits defined, srcBuffer and
211 * dstBuffer, and their values will be maintained via the macros
212 * SET_DBE_DSTBUF and SET_DBE_SRCBUF (below). If you also
213 * put -DNEED_DBE_BUF_VALIDATE into PervasiveDBEDefines, the function
214 * DbeValidateBuffer will be called any time the bits change to give you
215 * a chance to do some setup. See the DBE code for more details on this
216 * function. We put in these levels of conditionality so that you can do
217 * just what you need to do, and no more. If neither of these defines
218 * are used, the bits won't be there, and VALIDATE_DRAWABLE_AND_GC will
222 #if defined(NEED_DBE_BUF_BITS)
223 #define SET_DBE_DSTBUF(_pDraw, _drawID) \
224 SET_DBE_BUF(_pDraw, _drawID, dstBuffer, TRUE)
225 #define SET_DBE_SRCBUF(_pDraw, _drawID) \
226 SET_DBE_BUF(_pDraw, _drawID, srcBuffer, FALSE)
227 #if defined (NEED_DBE_BUF_VALIDATE)
228 #define SET_DBE_BUF(_pDraw, _drawID, _whichBuffer, _dstbuf) \
229 if (_pDraw->type == DRAWABLE_WINDOW)\
231 int thisbuf = (_pDraw->id == _drawID);\
232 if (thisbuf != ((WindowPtr)_pDraw)->_whichBuffer)\
234 ((WindowPtr)_pDraw)->_whichBuffer = thisbuf;\
235 DbeValidateBuffer((WindowPtr)_pDraw, _drawID, _dstbuf);\
238 #else /* want buffer bits, but don't need to call DbeValidateBuffer */
239 #define SET_DBE_BUF(_pDraw, _drawID, _whichBuffer, _dstbuf) \
240 if (_pDraw->type == DRAWABLE_WINDOW)\
242 ((WindowPtr)_pDraw)->_whichBuffer = (_pDraw->id == _drawID);\
244 #endif /* NEED_DBE_BUF_VALIDATE */
245 #else /* don't want buffer bits in window */
246 #define SET_DBE_DSTBUF(_pDraw, _drawID) /**/
247 #define SET_DBE_SRCBUF(_pDraw, _drawID) /**/
248 #endif /* NEED_DBE_BUF_BITS */
250 #define VALIDATE_DRAWABLE_AND_GC(drawID, pDraw, pGC, client)\
251 if ((stuff->gc == INVALID) || (client->lastGCID != stuff->gc) ||\
252 (client->lastDrawableID != drawID))\
254 SECURITY_VERIFY_GEOMETRABLE(pDraw, drawID, client, SecurityWriteAccess);\
255 SECURITY_VERIFY_GC(pGC, stuff->gc, client, SecurityReadAccess);\
256 if ((pGC->depth != pDraw->depth) ||\
257 (pGC->pScreen != pDraw->pScreen))\
259 client->lastDrawable = pDraw;\
260 client->lastDrawableID = drawID;\
261 client->lastGC = pGC;\
262 client->lastGCID = stuff->gc;\
266 pGC = client->lastGC;\
267 pDraw = client->lastDrawable;\
269 SET_DBE_DSTBUF(pDraw, drawID);\
270 if (pGC->serialNumber != pDraw->serialNumber)\
271 ValidateGC(pDraw, pGC);
274 #define WriteReplyToClient(pClient, size, pReply) \
275 if ((pClient)->swapped) \
276 (*ReplySwapVector[((xReq *)(pClient)->requestBuffer)->reqType]) \
277 (pClient, (int)(size), pReply); \
278 else (void) WriteToClient(pClient, (int)(size), (char *)(pReply));
280 #define WriteSwappedDataToClient(pClient, size, pbuf) \
281 if ((pClient)->swapped) \
282 (*(pClient)->pSwapReplyFunc)(pClient, (int)(size), pbuf); \
283 else (void) WriteToClient (pClient, (int)(size), (char *)(pbuf));
285 typedef struct _TimeStamp *TimeStampPtr;
287 #ifndef _XTYPEDEF_CLIENTPTR
288 typedef struct _Client *ClientPtr; /* also in misc.h */
289 #define _XTYPEDEF_CLIENTPTR
292 typedef struct _WorkQueue *WorkQueuePtr;
294 extern ClientPtr requestingClient;
295 extern ClientPtr *clients;
296 extern ClientPtr serverClient;
297 extern int currentMaxClients;
299 #if !(defined(__alpha) || defined(__alpha__))
300 typedef long HWEventQueueType;
302 typedef int HWEventQueueType;
304 typedef HWEventQueueType* HWEventQueuePtr;
306 extern HWEventQueuePtr checkForInput[2];
308 typedef struct _TimeStamp {
309 CARD32 months; /* really ~49.7 days */
315 extern void SetInputCheck(
316 #if NeedFunctionPrototypes
317 HWEventQueuePtr /*c0*/,
318 HWEventQueuePtr /*c1*/
322 extern void CloseDownClient(
323 #if NeedFunctionPrototypes
328 extern void UpdateCurrentTime(
329 #if NeedFunctionPrototypes
334 extern void UpdateCurrentTimeIf(
335 #if NeedFunctionPrototypes
340 extern void InitSelections(
341 #if NeedFunctionPrototypes
346 extern void FlushClientCaches(
347 #if NeedFunctionPrototypes
352 extern int dixDestroyPixmap(
353 #if NeedFunctionPrototypes
359 extern void CloseDownRetainedResources(
360 #if NeedFunctionPrototypes
365 extern void InitClient(
366 #if NeedFunctionPrototypes
367 ClientPtr /*client*/,
373 extern ClientPtr NextAvailableClient(
374 #if NeedFunctionPrototypes
379 extern void SendErrorToClient(
380 #if NeedFunctionPrototypes
381 ClientPtr /*client*/,
382 unsigned int /*majorCode*/,
383 unsigned int /*minorCode*/,
389 extern void DeleteWindowFromAnySelections(
390 #if NeedFunctionPrototypes
395 extern void MarkClientException(
396 #if NeedFunctionPrototypes
401 extern int GetGeometry(
402 #if NeedFunctionPrototypes
403 ClientPtr /*client*/,
404 xGetGeometryReply* /* wa */
410 extern void CopyISOLatin1Lowered(
411 #if NeedFunctionPrototypes
412 unsigned char * /*dest*/,
413 unsigned char * /*source*/,
420 extern WindowPtr SecurityLookupWindow(
421 #if NeedFunctionPrototypes
423 ClientPtr /*client*/,
428 extern pointer SecurityLookupDrawable(
429 #if NeedFunctionPrototypes
431 ClientPtr /*client*/,
436 extern WindowPtr LookupWindow(
437 #if NeedFunctionPrototypes
443 extern pointer LookupDrawable(
444 #if NeedFunctionPrototypes
452 extern WindowPtr LookupWindow(
453 #if NeedFunctionPrototypes
459 extern pointer LookupDrawable(
460 #if NeedFunctionPrototypes
466 #define SecurityLookupWindow(rid, client, access_mode) \
467 LookupWindow(rid, client)
469 #define SecurityLookupDrawable(rid, client, access_mode) \
470 LookupDrawable(rid, client)
472 #endif /* XCSECURITY */
474 extern ClientPtr LookupClient(
475 #if NeedFunctionPrototypes
482 #if NeedVarargsPrototypes
488 extern int AlterSaveSetForClient(
489 #if NeedFunctionPrototypes
490 ClientPtr /*client*/,
496 extern void DeleteWindowFromAnySaveSet(
497 #if NeedFunctionPrototypes
502 extern void BlockHandler(
503 #if NeedFunctionPrototypes
504 pointer /*pTimeout*/,
505 pointer /*pReadmask*/
509 extern void WakeupHandler(
510 #if NeedFunctionPrototypes
512 pointer /*pReadmask*/
516 typedef struct timeval ** OSTimePtr;
518 typedef void (* BlockHandlerProcPtr)(
519 #if NeedNestedPrototypes
520 pointer /* blockData */,
521 OSTimePtr /* pTimeout */,
522 pointer /* pReadmask */
526 typedef void (* WakeupHandlerProcPtr)(
527 #if NeedNestedPrototypes
528 pointer /* blockData */,
530 pointer /* pReadmask */
534 extern Bool RegisterBlockAndWakeupHandlers(
535 #if NeedFunctionPrototypes
536 BlockHandlerProcPtr /*blockHandler*/,
537 WakeupHandlerProcPtr /*wakeupHandler*/,
538 pointer /*blockData*/
542 extern void RemoveBlockAndWakeupHandlers(
543 #if NeedFunctionPrototypes
544 BlockHandlerProcPtr /*blockHandler*/,
545 WakeupHandlerProcPtr /*wakeupHandler*/,
546 pointer /*blockData*/
550 extern void InitBlockAndWakeupHandlers(
551 #if NeedFunctionPrototypes
556 extern void ProcessWorkQueue(
557 #if NeedFunctionPrototypes
562 extern Bool QueueWorkProc(
563 #if NeedFunctionPrototypes
564 Bool (* /*function*/)(
565 #if NeedNestedPrototypes
566 ClientPtr /*clientUnused*/,
570 ClientPtr /*client*/,
575 typedef Bool (* ClientSleepProcPtr)(
576 #if NeedFunctionPrototypes
577 ClientPtr /*client*/,
582 extern Bool ClientSleep(
583 #if NeedFunctionPrototypes
584 ClientPtr /*client*/,
585 ClientSleepProcPtr /* function */,
590 extern Bool ClientSignal(
591 #if NeedFunctionPrototypes
596 extern void ClientWakeup(
597 #if NeedFunctionPrototypes
602 extern Bool ClientIsAsleep(
603 #if NeedFunctionPrototypes
610 extern Atom MakeAtom(
611 #if NeedFunctionPrototypes
618 extern Bool ValidAtom(
619 #if NeedFunctionPrototypes
624 extern char *NameForAtom(
625 #if NeedFunctionPrototypes
630 extern void AtomError(
631 #if NeedFunctionPrototypes
636 extern void FreeAllAtoms(
637 #if NeedFunctionPrototypes
642 extern void InitAtoms(
643 #if NeedFunctionPrototypes
650 extern void SetMaskForEvent(
651 #if NeedFunctionPrototypes
657 extern Bool PointerConfinedToScreen(
658 #if NeedFunctionPrototypes
663 extern Bool IsParent(
664 #if NeedFunctionPrototypes
665 WindowPtr /* maybeparent */,
666 WindowPtr /* child */
670 extern WindowPtr GetCurrentRootWindow(
671 #if NeedFunctionPrototypes
676 extern WindowPtr GetSpriteWindow(
677 #if NeedFunctionPrototypes
682 extern void GetSpritePosition(
683 #if NeedFunctionPrototypes
689 extern void NoticeEventTime(
690 #if NeedFunctionPrototypes
695 extern void EnqueueEvent(
696 #if NeedFunctionPrototypes
698 DeviceIntPtr /* device */,
703 extern void ComputeFreezes(
704 #if NeedFunctionPrototypes
709 extern void CheckGrabForSyncs(
710 #if NeedFunctionPrototypes
711 DeviceIntPtr /* dev */,
717 extern void ActivatePointerGrab(
718 #if NeedFunctionPrototypes
719 DeviceIntPtr /* mouse */,
721 TimeStamp /* time */,
726 extern void DeactivatePointerGrab(
727 #if NeedFunctionPrototypes
728 DeviceIntPtr /* mouse */
732 extern void ActivateKeyboardGrab(
733 #if NeedFunctionPrototypes
734 DeviceIntPtr /* keybd */,
736 TimeStamp /* time */,
741 extern void DeactivateKeyboardGrab(
742 #if NeedFunctionPrototypes
743 DeviceIntPtr /* keybd */
747 extern void AllowSome(
748 #if NeedFunctionPrototypes
749 ClientPtr /* client */,
750 TimeStamp /* time */,
751 DeviceIntPtr /* thisDev */,
756 extern void ReleaseActiveGrabs(
757 #if NeedFunctionPrototypes
762 extern int DeliverEventsToWindow(
763 #if NeedFunctionPrototypes
764 WindowPtr /* pWin */,
765 xEventPtr /* pEvents */,
773 extern int DeliverDeviceEvents(
774 #if NeedFunctionPrototypes
775 WindowPtr /* pWin */,
778 WindowPtr /* stopAt */,
779 DeviceIntPtr /* dev */,
784 extern void DefineInitialRootWindow(
785 #if NeedFunctionPrototypes
790 extern void WindowHasNewCursor(
791 #if NeedFunctionPrototypes
796 extern Bool CheckDeviceGrabs(
797 #if NeedFunctionPrototypes
798 DeviceIntPtr /* device */,
800 int /* checkFirst */,
805 extern void DeliverFocusedEvent(
806 #if NeedFunctionPrototypes
807 DeviceIntPtr /* keybd */,
809 WindowPtr /* window */,
814 extern void DeliverGrabbedEvent(
815 #if NeedFunctionPrototypes
817 DeviceIntPtr /* thisDev */,
818 Bool /* deactivateGrab */,
823 extern void RecalculateDeliverableEvents(
824 #if NeedFunctionPrototypes
829 extern int OtherClientGone(
830 #if NeedFunctionPrototypes
836 extern void DoFocusEvents(
837 #if NeedFunctionPrototypes
838 DeviceIntPtr /* dev */,
839 WindowPtr /* fromWin */,
840 WindowPtr /* toWin */,
845 extern int SetInputFocus(
846 #if NeedFunctionPrototypes
847 ClientPtr /* client */,
848 DeviceIntPtr /* dev */,
849 Window /* focusID */,
850 CARD8 /* revertTo */,
856 extern int GrabDevice(
857 #if NeedFunctionPrototypes
858 ClientPtr /* client */,
859 DeviceIntPtr /* dev */,
860 unsigned /* this_mode */,
861 unsigned /* other_mode */,
862 Window /* grabWindow */,
863 unsigned /* ownerEvents */,
870 extern void InitEvents(
871 #if NeedFunctionPrototypes
876 extern void DeleteWindowFromAnyEvents(
877 #if NeedFunctionPrototypes
878 WindowPtr /* pWin */,
879 Bool /* freeResources */
883 extern void CheckCursorConfinement(
884 #if NeedFunctionPrototypes
889 extern Mask EventMaskForClient(
890 #if NeedFunctionPrototypes
891 WindowPtr /* pWin */,
892 ClientPtr /* client */
898 extern int DeliverEvents(
899 #if NeedFunctionPrototypes
903 WindowPtr /*otherParent*/
907 extern void WriteEventsToClient(
908 #if NeedFunctionPrototypes
909 ClientPtr /*pClient*/,
915 extern int TryClientEvents(
916 #if NeedFunctionPrototypes
917 ClientPtr /*client*/,
918 xEventPtr /*pEvents*/,
926 extern int EventSelectForWindow(
927 #if NeedFunctionPrototypes
929 ClientPtr /*client*/,
934 extern int EventSuppressForWindow(
935 #if NeedFunctionPrototypes
937 ClientPtr /*client*/,
939 Bool * /*checkOptional*/
943 extern int MaybeDeliverEventsToClient(
944 #if NeedFunctionPrototypes
946 xEventPtr /*pEvents*/,
949 ClientPtr /*dontClient*/
953 extern void WindowsRestructured(
954 #if NeedFunctionPrototypes
959 extern void ResetClientPrivates(
960 #if NeedFunctionPrototypes
965 extern int AllocateClientPrivateIndex(
966 #if NeedFunctionPrototypes
971 extern Bool AllocateClientPrivate(
972 #if NeedFunctionPrototypes
979 * callback manager stuff
982 #ifndef _XTYPEDEF_CALLBACKLISTPTR
983 typedef struct _CallbackList *CallbackListPtr; /* also in misc.h */
984 #define _XTYPEDEF_CALLBACKLISTPTR
987 typedef void (*CallbackProcPtr) (
988 #if NeedNestedPrototypes
989 CallbackListPtr *, pointer, pointer
993 typedef Bool (*AddCallbackProcPtr) (
994 #if NeedNestedPrototypes
995 CallbackListPtr *, CallbackProcPtr, pointer
999 typedef Bool (*DeleteCallbackProcPtr) (
1000 #if NeedNestedPrototypes
1001 CallbackListPtr *, CallbackProcPtr, pointer
1005 typedef void (*CallCallbacksProcPtr) (
1006 #if NeedNestedPrototypes
1007 CallbackListPtr *, pointer
1011 typedef void (*DeleteCallbackListProcPtr) (
1012 #if NeedNestedPrototypes
1017 typedef struct _CallbackProcs {
1018 AddCallbackProcPtr AddCallback;
1019 DeleteCallbackProcPtr DeleteCallback;
1020 CallCallbacksProcPtr CallCallbacks;
1021 DeleteCallbackListProcPtr DeleteCallbackList;
1022 } CallbackFuncsRec, *CallbackFuncsPtr;
1024 extern Bool CreateCallbackList(
1025 #if NeedFunctionPrototypes
1026 CallbackListPtr * /*pcbl*/,
1027 CallbackFuncsPtr /*cbfuncs*/
1031 extern Bool AddCallback(
1032 #if NeedFunctionPrototypes
1033 CallbackListPtr * /*pcbl*/,
1034 CallbackProcPtr /*callback*/,
1039 extern Bool DeleteCallback(
1040 #if NeedFunctionPrototypes
1041 CallbackListPtr * /*pcbl*/,
1042 CallbackProcPtr /*callback*/,
1047 extern void CallCallbacks(
1048 #if NeedFunctionPrototypes
1049 CallbackListPtr * /*pcbl*/,
1050 pointer /*call_data*/
1054 extern void DeleteCallbackList(
1055 #if NeedFunctionPrototypes
1056 CallbackListPtr * /*pcbl*/
1060 extern void InitCallbackManager(
1061 #if NeedFunctionPrototypes
1067 * ServerGrabCallback stuff
1070 extern CallbackListPtr ServerGrabCallback;
1072 typedef enum {SERVER_GRABBED, SERVER_UNGRABBED,
1073 CLIENT_PERVIOUS, CLIENT_IMPERVIOUS } ServerGrabState;
1077 ServerGrabState grabstate;
1078 } ServerGrabInfoRec;
1081 * EventCallback stuff
1084 extern CallbackListPtr EventCallback;
1093 * DeviceEventCallback stuff
1096 extern CallbackListPtr DeviceEventCallback;
1101 } DeviceEventInfoRec;