VirtualBox

source: vbox/trunk/src/VBox/Additions/x11/x11include/xorg-server-1.6.0/dix.h@ 17448

Last change on this file since 17448 was 17448, checked in by vboxsync, 16 years ago

Additions/x11: added a full header set for X.Org server 1.5 and 1.6

  • Property svn:eol-style set to native
File size: 15.3 KB
Line 
1/***********************************************************
2
3Copyright 1987, 1998 The Open Group
4
5Permission to use, copy, modify, distribute, and sell this software and its
6documentation for any purpose is hereby granted without fee, provided that
7the above copyright notice appear in all copies and that both that
8copyright notice and this permission notice appear in supporting
9documentation.
10
11The above copyright notice and this permission notice shall be included in
12all copies or substantial portions of the Software.
13
14THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
18AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
21Except as contained in this notice, the name of The Open Group shall not be
22used in advertising or otherwise to promote the sale, use or other dealings
23in this Software without prior written authorization from The Open Group.
24
25
26Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
27
28 All Rights Reserved
29
30Permission to use, copy, modify, and distribute this software and its
31documentation for any purpose and without fee is hereby granted,
32provided that the above copyright notice appear in all copies and that
33both that copyright notice and this permission notice appear in
34supporting documentation, and that the name of Digital not be
35used in advertising or publicity pertaining to distribution of the
36software without specific, written prior permission.
37
38DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
39ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
40DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
41ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
42WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
43ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
44SOFTWARE.
45
46******************************************************************/
47
48#ifndef DIX_H
49#define DIX_H
50
51#include "gc.h"
52#include "window.h"
53#include "input.h"
54#include "cursor.h"
55#include "geext.h"
56#include <X11/extensions/XI.h>
57
58#define EARLIER -1
59#define SAMETIME 0
60#define LATER 1
61
62#define NullClient ((ClientPtr) 0)
63#define REQUEST(type) \
64 type *stuff = (type *)client->requestBuffer
65
66
67#define REQUEST_SIZE_MATCH(req)\
68 if ((sizeof(req) >> 2) != client->req_len)\
69 return(BadLength)
70
71#define REQUEST_AT_LEAST_SIZE(req) \
72 if ((sizeof(req) >> 2) > client->req_len )\
73 return(BadLength)
74
75#define REQUEST_FIXED_SIZE(req, n)\
76 if (((sizeof(req) >> 2) > client->req_len) || \
77 (((sizeof(req) + (n) + 3) >> 2) != client->req_len)) \
78 return(BadLength)
79
80#define LEGAL_NEW_RESOURCE(id,client)\
81 if (!LegalNewID(id,client)) \
82 {\
83 client->errorValue = id;\
84 return(BadIDChoice);\
85 }
86
87#define VALIDATE_DRAWABLE_AND_GC(drawID, pDraw, mode)\
88 {\
89 int rc = dixLookupDrawable(&(pDraw), drawID, client, M_ANY, mode);\
90 if (rc != Success)\
91 return rc;\
92 rc = dixLookupGC(&(pGC), stuff->gc, client, DixUseAccess);\
93 if (rc != Success)\
94 return rc;\
95 if ((pGC->depth != pDraw->depth) || (pGC->pScreen != pDraw->pScreen))\
96 return (BadMatch);\
97 }\
98 if (pGC->serialNumber != pDraw->serialNumber)\
99 ValidateGC(pDraw, pGC);
100
101
102#define WriteReplyToClient(pClient, size, pReply) { \
103 if ((pClient)->swapped) \
104 (*ReplySwapVector[((xReq *)(pClient)->requestBuffer)->reqType]) \
105 (pClient, (int)(size), pReply); \
106 else (void) WriteToClient(pClient, (int)(size), (char *)(pReply)); }
107
108#define WriteSwappedDataToClient(pClient, size, pbuf) \
109 if ((pClient)->swapped) \
110 (*(pClient)->pSwapReplyFunc)(pClient, (int)(size), pbuf); \
111 else (void) WriteToClient (pClient, (int)(size), (char *)(pbuf));
112
113typedef struct _TimeStamp *TimeStampPtr;
114
115#ifndef _XTYPEDEF_CLIENTPTR
116typedef struct _Client *ClientPtr; /* also in misc.h */
117#define _XTYPEDEF_CLIENTPTR
118#endif
119
120typedef struct _WorkQueue *WorkQueuePtr;
121
122extern ClientPtr clients[MAXCLIENTS];
123extern ClientPtr serverClient;
124extern int currentMaxClients;
125extern char dispatchExceptionAtReset;
126
127typedef int HWEventQueueType;
128typedef HWEventQueueType* HWEventQueuePtr;
129
130extern HWEventQueuePtr checkForInput[2];
131
132typedef struct _TimeStamp {
133 CARD32 months; /* really ~49.7 days */
134 CARD32 milliseconds;
135} TimeStamp;
136
137/* dispatch.c */
138
139extern void SetInputCheck(
140 HWEventQueuePtr /*c0*/,
141 HWEventQueuePtr /*c1*/);
142
143extern void CloseDownClient(
144 ClientPtr /*client*/);
145
146extern void UpdateCurrentTime(void);
147
148extern void UpdateCurrentTimeIf(void);
149
150extern int dixDestroyPixmap(
151 pointer /*value*/,
152 XID /*pid*/);
153
154extern void InitClient(
155 ClientPtr /*client*/,
156 int /*i*/,
157 pointer /*ospriv*/);
158
159extern ClientPtr NextAvailableClient(
160 pointer /*ospriv*/);
161
162extern void SendErrorToClient(
163 ClientPtr /*client*/,
164 unsigned int /*majorCode*/,
165 unsigned int /*minorCode*/,
166 XID /*resId*/,
167 int /*errorCode*/);
168
169extern void MarkClientException(
170 ClientPtr /*client*/);
171
172extern void ddxBeforeReset (void);
173
174/* dixutils.c */
175
176extern void CopyISOLatin1Lowered(
177 unsigned char * /*dest*/,
178 unsigned char * /*source*/,
179 int /*length*/);
180
181extern int CompareISOLatin1Lowered(
182 unsigned char * /*a*/,
183 int alen,
184 unsigned char * /*b*/,
185 int blen);
186
187extern int dixLookupWindow(
188 WindowPtr *result,
189 XID id,
190 ClientPtr client,
191 Mask access_mode);
192
193extern int dixLookupDrawable(
194 DrawablePtr *result,
195 XID id,
196 ClientPtr client,
197 Mask type_mask,
198 Mask access_mode);
199
200extern int dixLookupGC(
201 GCPtr *result,
202 XID id,
203 ClientPtr client,
204 Mask access_mode);
205
206extern int dixLookupClient(
207 ClientPtr *result,
208 XID id,
209 ClientPtr client,
210 Mask access_mode);
211
212extern void NoopDDA(void);
213
214extern int AlterSaveSetForClient(
215 ClientPtr /*client*/,
216 WindowPtr /*pWin*/,
217 unsigned /*mode*/,
218 Bool /*toRoot*/,
219 Bool /*map*/);
220
221extern void DeleteWindowFromAnySaveSet(
222 WindowPtr /*pWin*/);
223
224extern void BlockHandler(
225 pointer /*pTimeout*/,
226 pointer /*pReadmask*/);
227
228extern void WakeupHandler(
229 int /*result*/,
230 pointer /*pReadmask*/);
231
232typedef void (* WakeupHandlerProcPtr)(
233 pointer /* blockData */,
234 int /* result */,
235 pointer /* pReadmask */);
236
237extern Bool RegisterBlockAndWakeupHandlers(
238 BlockHandlerProcPtr /*blockHandler*/,
239 WakeupHandlerProcPtr /*wakeupHandler*/,
240 pointer /*blockData*/);
241
242extern void RemoveBlockAndWakeupHandlers(
243 BlockHandlerProcPtr /*blockHandler*/,
244 WakeupHandlerProcPtr /*wakeupHandler*/,
245 pointer /*blockData*/);
246
247extern void InitBlockAndWakeupHandlers(void);
248
249extern void ProcessWorkQueue(void);
250
251extern void ProcessWorkQueueZombies(void);
252
253extern Bool QueueWorkProc(
254 Bool (* /*function*/)(
255 ClientPtr /*clientUnused*/,
256 pointer /*closure*/),
257 ClientPtr /*client*/,
258 pointer /*closure*/
259);
260
261typedef Bool (* ClientSleepProcPtr)(
262 ClientPtr /*client*/,
263 pointer /*closure*/);
264
265extern Bool ClientSleep(
266 ClientPtr /*client*/,
267 ClientSleepProcPtr /* function */,
268 pointer /*closure*/);
269
270#ifndef ___CLIENTSIGNAL_DEFINED___
271#define ___CLIENTSIGNAL_DEFINED___
272extern Bool ClientSignal(
273 ClientPtr /*client*/);
274#endif /* ___CLIENTSIGNAL_DEFINED___ */
275
276extern void ClientWakeup(
277 ClientPtr /*client*/);
278
279extern Bool ClientIsAsleep(
280 ClientPtr /*client*/);
281
282/* atom.c */
283
284extern Atom MakeAtom(
285 char * /*string*/,
286 unsigned /*len*/,
287 Bool /*makeit*/);
288
289extern Bool ValidAtom(
290 Atom /*atom*/);
291
292extern char *NameForAtom(
293 Atom /*atom*/);
294
295extern void AtomError(void);
296
297extern void FreeAllAtoms(void);
298
299extern void InitAtoms(void);
300
301/* main.c */
302
303extern void SetVendorRelease(int release);
304
305extern void SetVendorString(char *string);
306
307/* events.c */
308
309extern void SetMaskForEvent(
310 int /* deviceid */,
311 Mask /* mask */,
312 int /* event */);
313
314extern void ConfineToShape(
315 DeviceIntPtr /* pDev */,
316 RegionPtr /* shape */,
317 int* /* px */,
318 int* /* py */);
319
320extern Bool IsParent(
321 WindowPtr /* maybeparent */,
322 WindowPtr /* child */);
323
324extern WindowPtr GetCurrentRootWindow(DeviceIntPtr pDev);
325
326extern WindowPtr GetSpriteWindow(DeviceIntPtr pDev);
327
328
329extern void NoticeEventTime(xEventPtr /* xE */);
330
331extern void EnqueueEvent(
332 xEventPtr /* xE */,
333 DeviceIntPtr /* device */,
334 int /* count */);
335
336extern void ActivatePointerGrab(
337 DeviceIntPtr /* mouse */,
338 GrabPtr /* grab */,
339 TimeStamp /* time */,
340 Bool /* autoGrab */);
341
342extern void DeactivatePointerGrab(
343 DeviceIntPtr /* mouse */);
344
345extern void ActivateKeyboardGrab(
346 DeviceIntPtr /* keybd */,
347 GrabPtr /* grab */,
348 TimeStamp /* time */,
349 Bool /* passive */);
350
351extern void DeactivateKeyboardGrab(
352 DeviceIntPtr /* keybd */);
353
354extern void AllowSome(
355 ClientPtr /* client */,
356 TimeStamp /* time */,
357 DeviceIntPtr /* thisDev */,
358 int /* newState */,
359 Bool /* core */);
360
361extern void ReleaseActiveGrabs(
362 ClientPtr client);
363
364extern int DeliverEventsToWindow(
365 DeviceIntPtr /* pWin */,
366 WindowPtr /* pWin */,
367 xEventPtr /* pEvents */,
368 int /* count */,
369 Mask /* filter */,
370 GrabPtr /* grab */,
371 int /* mskidx */);
372
373extern int DeliverDeviceEvents(
374 WindowPtr /* pWin */,
375 xEventPtr /* xE */,
376 GrabPtr /* grab */,
377 WindowPtr /* stopAt */,
378 DeviceIntPtr /* dev */,
379 int /* count */);
380
381extern void DefineInitialRootWindow(
382 WindowPtr /* win */);
383
384extern void SetupSprite(
385 DeviceIntPtr /* pDev */,
386 ScreenPtr /* pScreen */);
387
388extern void InitializeSprite(
389 DeviceIntPtr /* pDev */,
390 WindowPtr /* pWin */);
391
392extern void UpdateSpriteForScreen(
393 DeviceIntPtr /* pDev */,
394 ScreenPtr /* pScreen */);
395
396extern void WindowHasNewCursor(
397 WindowPtr /* pWin */);
398
399extern Bool CheckDeviceGrabs(
400 DeviceIntPtr /* device */,
401 xEventPtr /* xE */,
402 int /* checkFirst */,
403 int /* count */);
404
405extern void DeliverFocusedEvent(
406 DeviceIntPtr /* keybd */,
407 xEventPtr /* xE */,
408 WindowPtr /* window */,
409 int /* count */);
410
411extern void DeliverGrabbedEvent(
412 xEventPtr /* xE */,
413 DeviceIntPtr /* thisDev */,
414 Bool /* deactivateGrab */,
415 int /* count */);
416
417#ifdef XKB
418extern void FixKeyState(
419 xEvent * /* xE */,
420 DeviceIntPtr /* keybd */);
421#endif /* XKB */
422
423extern void RecalculateDeliverableEvents(
424 WindowPtr /* pWin */);
425
426extern int OtherClientGone(
427 pointer /* value */,
428 XID /* id */);
429
430extern void DoFocusEvents(
431 DeviceIntPtr /* dev */,
432 WindowPtr /* fromWin */,
433 WindowPtr /* toWin */,
434 int /* mode */);
435
436extern int SetInputFocus(
437 ClientPtr /* client */,
438 DeviceIntPtr /* dev */,
439 Window /* focusID */,
440 CARD8 /* revertTo */,
441 Time /* ctime */,
442 Bool /* followOK */);
443
444extern int GrabDevice(
445 ClientPtr /* client */,
446 DeviceIntPtr /* dev */,
447 unsigned /* this_mode */,
448 unsigned /* other_mode */,
449 Window /* grabWindow */,
450 unsigned /* ownerEvents */,
451 Time /* ctime */,
452 Mask /* mask */,
453 CARD8 * /* status */,
454 Bool /* coreGrab */);
455
456extern void InitEvents(void);
457extern void InitSprite(
458 DeviceIntPtr /* pDev */,
459 Bool /* hasCursor */
460 );
461
462extern void CloseDownEvents(void);
463
464extern void DeleteWindowFromAnyEvents(
465 WindowPtr /* pWin */,
466 Bool /* freeResources */);
467
468
469extern Mask EventMaskForClient(
470 WindowPtr /* pWin */,
471 ClientPtr /* client */);
472
473
474
475extern int DeliverEvents(
476 WindowPtr /*pWin*/,
477 xEventPtr /*xE*/,
478 int /*count*/,
479 WindowPtr /*otherParent*/);
480
481extern Bool
482CheckMotion(
483 xEvent* /* xE */,
484 DeviceIntPtr /* pDev */);
485
486extern void WriteEventsToClient(
487 ClientPtr /*pClient*/,
488 int /*count*/,
489 xEventPtr /*events*/);
490
491extern int TryClientEvents(
492 ClientPtr /*client*/,
493 DeviceIntPtr /* device */,
494 xEventPtr /*pEvents*/,
495 int /*count*/,
496 Mask /*mask*/,
497 Mask /*filter*/,
498 GrabPtr /*grab*/);
499
500extern void WindowsRestructured(void);
501
502extern Bool SetClientPointer(
503 ClientPtr /* client */,
504 ClientPtr /* setter */,
505 DeviceIntPtr /* device */);
506
507extern DeviceIntPtr PickPointer(
508 ClientPtr /* client */);
509
510extern DeviceIntPtr PickKeyboard(
511 ClientPtr /* client */);
512
513extern Bool IsInterferingGrab(
514 ClientPtr /* client */,
515 DeviceIntPtr /* dev */,
516 xEvent* /* events */);
517
518#ifdef PANORAMIX
519extern void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff);
520#endif
521
522#ifdef RANDR
523void
524ScreenRestructured (ScreenPtr pScreen);
525#endif
526
527extern int ffs(int i);
528
529/*
530 * callback manager stuff
531 */
532
533#ifndef _XTYPEDEF_CALLBACKLISTPTR
534typedef struct _CallbackList *CallbackListPtr; /* also in misc.h */
535#define _XTYPEDEF_CALLBACKLISTPTR
536#endif
537
538typedef void (*CallbackProcPtr) (
539 CallbackListPtr *, pointer, pointer);
540
541extern Bool AddCallback(
542 CallbackListPtr * /*pcbl*/,
543 CallbackProcPtr /*callback*/,
544 pointer /*data*/);
545
546extern Bool DeleteCallback(
547 CallbackListPtr * /*pcbl*/,
548 CallbackProcPtr /*callback*/,
549 pointer /*data*/);
550
551extern void CallCallbacks(
552 CallbackListPtr * /*pcbl*/,
553 pointer /*call_data*/);
554
555extern void DeleteCallbackList(
556 CallbackListPtr * /*pcbl*/);
557
558extern void InitCallbackManager(void);
559
560/*
561 * ServerGrabCallback stuff
562 */
563
564extern CallbackListPtr ServerGrabCallback;
565
566typedef enum {SERVER_GRABBED, SERVER_UNGRABBED,
567 CLIENT_PERVIOUS, CLIENT_IMPERVIOUS } ServerGrabState;
568
569typedef struct {
570 ClientPtr client;
571 ServerGrabState grabstate;
572} ServerGrabInfoRec;
573
574/*
575 * EventCallback stuff
576 */
577
578extern CallbackListPtr EventCallback;
579
580typedef struct {
581 ClientPtr client;
582 xEventPtr events;
583 int count;
584} EventInfoRec;
585
586/*
587 * DeviceEventCallback stuff
588 */
589
590extern CallbackListPtr DeviceEventCallback;
591
592typedef struct {
593 xEventPtr events;
594 int count;
595} DeviceEventInfoRec;
596
597extern int XItoCoreType(int xi_type);
598extern Bool DevHasCursor(DeviceIntPtr pDev);
599extern Bool IsPointerDevice( DeviceIntPtr dev);
600extern Bool IsKeyboardDevice(DeviceIntPtr dev);
601extern Bool IsPointerEvent(xEvent* xE);
602
603/*
604 * These are deprecated compatibility functions and will be removed soon!
605 * Please use the noted replacements instead.
606 */
607/* replaced by dixLookupWindow */
608extern WindowPtr SecurityLookupWindow(
609 XID id,
610 ClientPtr client,
611 Mask access_mode);
612/* replaced by dixLookupWindow */
613extern WindowPtr LookupWindow(
614 XID id,
615 ClientPtr client);
616
617/* replaced by dixLookupDrawable */
618extern pointer SecurityLookupDrawable(
619 XID id,
620 ClientPtr client,
621 Mask access_mode);
622
623/* replaced by dixLookupDrawable */
624extern pointer LookupDrawable(
625 XID id,
626 ClientPtr client);
627
628/* replaced by dixLookupClient */
629extern ClientPtr LookupClient(
630 XID id,
631 ClientPtr client);
632
633/* GE stuff */
634extern void SetGenericFilter(int extension, Mask* filters);
635extern int ExtGrabDevice(ClientPtr client,
636 DeviceIntPtr dev,
637 int device_mode,
638 WindowPtr grabWindow,
639 WindowPtr confineTo,
640 TimeStamp ctime,
641 Bool ownerEvents,
642 CursorPtr cursor,
643 Mask xi_mask,
644 GenericMaskPtr ge_masks);
645#endif /* DIX_H */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette