VirtualBox

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

Last change on this file since 68495 was 40349, checked in by vboxsync, 13 years ago

Additions/xorg: support X.Org Server 1.12.

  • Property svn:eol-style set to native
File size: 15.0 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 "callback.h"
52#include "gc.h"
53#include "window.h"
54#include "input.h"
55#include "cursor.h"
56#include "geext.h"
57#include "events.h"
58#include <X11/extensions/XI.h>
59
60#define EARLIER -1
61#define SAMETIME 0
62#define LATER 1
63
64#define NullClient ((ClientPtr) 0)
65#define REQUEST(type) \
66 type *stuff = (type *)client->requestBuffer
67
68
69#define REQUEST_SIZE_MATCH(req)\
70 if ((sizeof(req) >> 2) != client->req_len)\
71 return(BadLength)
72
73#define REQUEST_AT_LEAST_SIZE(req) \
74 if ((sizeof(req) >> 2) > client->req_len )\
75 return(BadLength)
76
77#define REQUEST_FIXED_SIZE(req, n)\
78 if (((sizeof(req) >> 2) > client->req_len) || \
79 (((sizeof(req) + (n) + 3) >> 2) != client->req_len)) \
80 return(BadLength)
81
82#define LEGAL_NEW_RESOURCE(id,client)\
83 if (!LegalNewID(id,client)) \
84 {\
85 client->errorValue = id;\
86 return BadIDChoice;\
87 }
88
89#define VALIDATE_DRAWABLE_AND_GC(drawID, pDraw, mode)\
90 {\
91 int rc = dixLookupDrawable(&(pDraw), drawID, client, M_ANY, mode);\
92 if (rc != Success)\
93 return rc;\
94 rc = dixLookupGC(&(pGC), stuff->gc, client, DixUseAccess);\
95 if (rc != Success)\
96 return rc;\
97 if ((pGC->depth != pDraw->depth) || (pGC->pScreen != pDraw->pScreen))\
98 return BadMatch;\
99 }\
100 if (pGC->serialNumber != pDraw->serialNumber)\
101 ValidateGC(pDraw, pGC);
102
103
104#define WriteReplyToClient(pClient, size, pReply) { \
105 if ((pClient)->swapped) \
106 (*ReplySwapVector[((xReq *)(pClient)->requestBuffer)->reqType]) \
107 (pClient, (int)(size), pReply); \
108 else (void) WriteToClient(pClient, (int)(size), (char *)(pReply)); }
109
110#define WriteSwappedDataToClient(pClient, size, pbuf) \
111 if ((pClient)->swapped) \
112 (*(pClient)->pSwapReplyFunc)(pClient, (int)(size), pbuf); \
113 else (void) WriteToClient (pClient, (int)(size), (char *)(pbuf));
114
115typedef struct _TimeStamp *TimeStampPtr;
116
117#ifndef _XTYPEDEF_CLIENTPTR
118typedef struct _Client *ClientPtr; /* also in misc.h */
119#define _XTYPEDEF_CLIENTPTR
120#endif
121
122typedef struct _WorkQueue *WorkQueuePtr;
123
124extern _X_EXPORT ClientPtr clients[MAXCLIENTS];
125extern _X_EXPORT ClientPtr serverClient;
126extern _X_EXPORT int currentMaxClients;
127extern _X_EXPORT char dispatchExceptionAtReset;
128
129typedef int HWEventQueueType;
130typedef HWEventQueueType* HWEventQueuePtr;
131
132extern _X_EXPORT HWEventQueuePtr checkForInput[2];
133
134typedef struct _TimeStamp {
135 CARD32 months; /* really ~49.7 days */
136 CARD32 milliseconds;
137} TimeStamp;
138
139/* dispatch.c */
140
141extern _X_EXPORT void SetInputCheck(
142 HWEventQueuePtr /*c0*/,
143 HWEventQueuePtr /*c1*/);
144
145extern _X_EXPORT void CloseDownClient(
146 ClientPtr /*client*/);
147
148extern _X_EXPORT void UpdateCurrentTime(void);
149
150extern _X_EXPORT void UpdateCurrentTimeIf(void);
151
152extern _X_EXPORT int dixDestroyPixmap(
153 pointer /*value*/,
154 XID /*pid*/);
155
156extern _X_EXPORT void InitClient(
157 ClientPtr /*client*/,
158 int /*i*/,
159 pointer /*ospriv*/);
160
161extern _X_EXPORT ClientPtr NextAvailableClient(
162 pointer /*ospriv*/);
163
164extern _X_EXPORT void SendErrorToClient(
165 ClientPtr /*client*/,
166 unsigned int /*majorCode*/,
167 unsigned int /*minorCode*/,
168 XID /*resId*/,
169 int /*errorCode*/);
170
171extern _X_EXPORT void MarkClientException(
172 ClientPtr /*client*/);
173
174extern _X_HIDDEN Bool CreateConnectionBlock(void);
175/* dixutils.c */
176
177extern _X_EXPORT int CompareISOLatin1Lowered(
178 const unsigned char * /*a*/,
179 int alen,
180 const unsigned char * /*b*/,
181 int blen);
182
183extern _X_EXPORT int dixLookupWindow(
184 WindowPtr *result,
185 XID id,
186 ClientPtr client,
187 Mask access_mode);
188
189extern _X_EXPORT int dixLookupDrawable(
190 DrawablePtr *result,
191 XID id,
192 ClientPtr client,
193 Mask type_mask,
194 Mask access_mode);
195
196extern _X_EXPORT int dixLookupGC(
197 GCPtr *result,
198 XID id,
199 ClientPtr client,
200 Mask access_mode);
201
202extern _X_EXPORT int dixLookupFontable(
203 FontPtr *result,
204 XID id,
205 ClientPtr client,
206 Mask access_mode);
207
208extern _X_EXPORT int dixLookupClient(
209 ClientPtr *result,
210 XID id,
211 ClientPtr client,
212 Mask access_mode);
213
214extern _X_EXPORT void NoopDDA(void);
215
216extern _X_EXPORT int AlterSaveSetForClient(
217 ClientPtr /*client*/,
218 WindowPtr /*pWin*/,
219 unsigned /*mode*/,
220 Bool /*toRoot*/,
221 Bool /*map*/);
222
223extern _X_EXPORT void DeleteWindowFromAnySaveSet(
224 WindowPtr /*pWin*/);
225
226extern _X_EXPORT void BlockHandler(
227 pointer /*pTimeout*/,
228 pointer /*pReadmask*/);
229
230extern _X_EXPORT void WakeupHandler(
231 int /*result*/,
232 pointer /*pReadmask*/);
233
234void
235EnableLimitedSchedulingLatency(void);
236
237void
238DisableLimitedSchedulingLatency(void);
239
240typedef void (* WakeupHandlerProcPtr)(
241 pointer /* blockData */,
242 int /* result */,
243 pointer /* pReadmask */);
244
245extern _X_EXPORT Bool RegisterBlockAndWakeupHandlers(
246 BlockHandlerProcPtr /*blockHandler*/,
247 WakeupHandlerProcPtr /*wakeupHandler*/,
248 pointer /*blockData*/);
249
250extern _X_EXPORT void RemoveBlockAndWakeupHandlers(
251 BlockHandlerProcPtr /*blockHandler*/,
252 WakeupHandlerProcPtr /*wakeupHandler*/,
253 pointer /*blockData*/);
254
255extern _X_EXPORT void InitBlockAndWakeupHandlers(void);
256
257extern _X_EXPORT void ProcessWorkQueue(void);
258
259extern _X_EXPORT void ProcessWorkQueueZombies(void);
260
261extern _X_EXPORT Bool QueueWorkProc(
262 Bool (* /*function*/)(
263 ClientPtr /*clientUnused*/,
264 pointer /*closure*/),
265 ClientPtr /*client*/,
266 pointer /*closure*/
267);
268
269typedef Bool (* ClientSleepProcPtr)(
270 ClientPtr /*client*/,
271 pointer /*closure*/);
272
273extern _X_EXPORT Bool ClientSleep(
274 ClientPtr /*client*/,
275 ClientSleepProcPtr /* function */,
276 pointer /*closure*/);
277
278#ifndef ___CLIENTSIGNAL_DEFINED___
279#define ___CLIENTSIGNAL_DEFINED___
280extern _X_EXPORT Bool ClientSignal(
281 ClientPtr /*client*/);
282#endif /* ___CLIENTSIGNAL_DEFINED___ */
283
284extern _X_EXPORT void ClientWakeup(
285 ClientPtr /*client*/);
286
287extern _X_EXPORT Bool ClientIsAsleep(
288 ClientPtr /*client*/);
289
290/* atom.c */
291
292extern _X_EXPORT Atom MakeAtom(
293 const char * /*string*/,
294 unsigned /*len*/,
295 Bool /*makeit*/);
296
297extern _X_EXPORT Bool ValidAtom(
298 Atom /*atom*/);
299
300extern _X_EXPORT const char *NameForAtom(
301 Atom /*atom*/);
302
303extern _X_EXPORT void AtomError(void) _X_NORETURN;
304
305extern _X_EXPORT void FreeAllAtoms(void);
306
307extern _X_EXPORT void InitAtoms(void);
308
309/* main.c */
310
311extern _X_EXPORT void SetVendorRelease(int release);
312
313extern _X_EXPORT void SetVendorString(char *string);
314
315/* events.c */
316
317extern void SetMaskForEvent(
318 int /* deviceid */,
319 Mask /* mask */,
320 int /* event */);
321
322extern _X_EXPORT void ConfineToShape(
323 DeviceIntPtr /* pDev */,
324 RegionPtr /* shape */,
325 int* /* px */,
326 int* /* py */);
327
328extern _X_EXPORT Bool IsParent(
329 WindowPtr /* maybeparent */,
330 WindowPtr /* child */);
331
332extern _X_EXPORT WindowPtr GetCurrentRootWindow(DeviceIntPtr pDev);
333
334extern _X_EXPORT WindowPtr GetSpriteWindow(DeviceIntPtr pDev);
335
336
337extern _X_EXPORT void NoticeEventTime(InternalEvent *ev);
338
339extern void EnqueueEvent(
340 InternalEvent * /* ev */,
341 DeviceIntPtr /* device */);
342extern void PlayReleasedEvents(void);
343
344extern void ActivatePointerGrab(
345 DeviceIntPtr /* mouse */,
346 GrabPtr /* grab */,
347 TimeStamp /* time */,
348 Bool /* autoGrab */);
349
350extern void DeactivatePointerGrab(
351 DeviceIntPtr /* mouse */);
352
353extern void ActivateKeyboardGrab(
354 DeviceIntPtr /* keybd */,
355 GrabPtr /* grab */,
356 TimeStamp /* time */,
357 Bool /* passive */);
358
359extern void DeactivateKeyboardGrab(
360 DeviceIntPtr /* keybd */);
361
362extern BOOL ActivateFocusInGrab(
363 DeviceIntPtr /* dev */,
364 WindowPtr /* old */,
365 WindowPtr /* win */);
366
367extern void AllowSome(
368 ClientPtr /* client */,
369 TimeStamp /* time */,
370 DeviceIntPtr /* thisDev */,
371 int /* newState */);
372
373extern void ReleaseActiveGrabs(
374 ClientPtr client);
375
376extern GrabPtr CheckPassiveGrabsOnWindow(
377 WindowPtr /* pWin */,
378 DeviceIntPtr /* device */,
379 InternalEvent * /* event */,
380 BOOL /* checkCore */,
381 BOOL /* activate */);
382
383extern _X_EXPORT int DeliverEventsToWindow(
384 DeviceIntPtr /* pWin */,
385 WindowPtr /* pWin */,
386 xEventPtr /* pEvents */,
387 int /* count */,
388 Mask /* filter */,
389 GrabPtr /* grab */);
390
391extern _X_EXPORT void DeliverRawEvent(
392 RawDeviceEvent* /* ev */,
393 DeviceIntPtr /* dev */
394);
395
396extern int DeliverDeviceEvents(
397 WindowPtr /* pWin */,
398 InternalEvent* /* event */,
399 GrabPtr /* grab */,
400 WindowPtr /* stopAt */,
401 DeviceIntPtr /* dev */);
402
403extern int DeliverOneGrabbedEvent(
404 InternalEvent* /* event*/,
405 DeviceIntPtr /* dev */,
406 enum InputLevel /* level */);
407
408extern void DeliverTouchEvents(
409 DeviceIntPtr /* dev */,
410 TouchPointInfoPtr /* ti */,
411 InternalEvent* /* ev */,
412 XID /* resource */);
413
414extern void InitializeSprite(
415 DeviceIntPtr /* pDev */,
416 WindowPtr /* pWin */);
417
418extern void UpdateSpriteForScreen(
419 DeviceIntPtr /* pDev */,
420 ScreenPtr /* pScreen */);
421
422extern _X_EXPORT void WindowHasNewCursor(
423 WindowPtr /* pWin */);
424
425extern Bool CheckDeviceGrabs(
426 DeviceIntPtr /* device */,
427 DeviceEvent* /* event */,
428 WindowPtr /* ancestor */);
429
430extern void DeliverFocusedEvent(
431 DeviceIntPtr /* keybd */,
432 InternalEvent* /* event */,
433 WindowPtr /* window */);
434
435extern int DeliverGrabbedEvent(
436 InternalEvent* /* event */,
437 DeviceIntPtr /* thisDev */,
438 Bool /* deactivateGrab */);
439
440extern void FixKeyState(
441 DeviceEvent* /* event */,
442 DeviceIntPtr /* keybd */);
443
444extern void RecalculateDeliverableEvents(
445 WindowPtr /* pWin */);
446
447extern _X_EXPORT int OtherClientGone(
448 pointer /* value */,
449 XID /* id */);
450
451extern void DoFocusEvents(
452 DeviceIntPtr /* dev */,
453 WindowPtr /* fromWin */,
454 WindowPtr /* toWin */,
455 int /* mode */);
456
457extern int SetInputFocus(
458 ClientPtr /* client */,
459 DeviceIntPtr /* dev */,
460 Window /* focusID */,
461 CARD8 /* revertTo */,
462 Time /* ctime */,
463 Bool /* followOK */);
464
465extern int GrabDevice(
466 ClientPtr /* client */,
467 DeviceIntPtr /* dev */,
468 unsigned /* this_mode */,
469 unsigned /* other_mode */,
470 Window /* grabWindow */,
471 unsigned /* ownerEvents */,
472 Time /* ctime */,
473 GrabMask* /* mask */,
474 int /* grabtype */,
475 Cursor /* curs */,
476 Window /* confineToWin */,
477 CARD8 * /* status */);
478
479extern void InitEvents(void);
480
481extern void CloseDownEvents(void);
482
483extern void DeleteWindowFromAnyEvents(
484 WindowPtr /* pWin */,
485 Bool /* freeResources */);
486
487
488extern Mask EventMaskForClient(
489 WindowPtr /* pWin */,
490 ClientPtr /* client */);
491
492
493
494extern _X_EXPORT int DeliverEvents(
495 WindowPtr /*pWin*/,
496 xEventPtr /*xE*/,
497 int /*count*/,
498 WindowPtr /*otherParent*/);
499
500extern Bool CheckMotion(
501 DeviceEvent* /* ev */,
502 DeviceIntPtr /* pDev */);
503
504extern _X_EXPORT void WriteEventsToClient(
505 ClientPtr /*pClient*/,
506 int /*count*/,
507 xEventPtr /*events*/);
508
509extern _X_EXPORT int TryClientEvents(
510 ClientPtr /*client*/,
511 DeviceIntPtr /* device */,
512 xEventPtr /*pEvents*/,
513 int /*count*/,
514 Mask /*mask*/,
515 Mask /*filter*/,
516 GrabPtr /*grab*/);
517
518extern _X_EXPORT void WindowsRestructured(void);
519
520extern int SetClientPointer(
521 ClientPtr /* client */,
522 DeviceIntPtr /* device */);
523
524extern _X_EXPORT DeviceIntPtr PickPointer(
525 ClientPtr /* client */);
526
527extern _X_EXPORT DeviceIntPtr PickKeyboard(
528 ClientPtr /* client */);
529
530extern Bool IsInterferingGrab(
531 ClientPtr /* client */,
532 DeviceIntPtr /* dev */,
533 xEvent* /* events */);
534
535#ifdef PANORAMIX
536extern _X_EXPORT void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff);
537#endif
538
539#ifdef RANDR
540extern _X_EXPORT void
541ScreenRestructured (ScreenPtr pScreen);
542#endif
543
544#ifndef HAVE_FFS
545extern _X_EXPORT int ffs(int i);
546#endif
547
548
549/*
550 * ServerGrabCallback stuff
551 */
552
553extern _X_EXPORT CallbackListPtr ServerGrabCallback;
554
555typedef enum {SERVER_GRABBED, SERVER_UNGRABBED,
556 CLIENT_PERVIOUS, CLIENT_IMPERVIOUS } ServerGrabState;
557
558typedef struct {
559 ClientPtr client;
560 ServerGrabState grabstate;
561} ServerGrabInfoRec;
562
563/*
564 * EventCallback stuff
565 */
566
567extern _X_EXPORT CallbackListPtr EventCallback;
568
569typedef struct {
570 ClientPtr client;
571 xEventPtr events;
572 int count;
573} EventInfoRec;
574
575/*
576 * DeviceEventCallback stuff
577 */
578
579extern _X_EXPORT CallbackListPtr DeviceEventCallback;
580
581typedef struct {
582 InternalEvent *event;
583 DeviceIntPtr device;
584} DeviceEventInfoRec;
585
586extern int XItoCoreType(int xi_type);
587extern Bool DevHasCursor(DeviceIntPtr pDev);
588extern _X_EXPORT Bool IsPointerDevice(DeviceIntPtr dev);
589extern _X_EXPORT Bool IsKeyboardDevice(DeviceIntPtr dev);
590extern Bool IsPointerEvent(InternalEvent *event);
591extern Bool IsTouchEvent(InternalEvent *event);
592extern _X_EXPORT Bool IsMaster(DeviceIntPtr dev);
593extern _X_EXPORT Bool IsFloating(DeviceIntPtr dev);
594
595extern _X_HIDDEN void CopyKeyClass(DeviceIntPtr device, DeviceIntPtr master);
596extern _X_HIDDEN int CorePointerProc(DeviceIntPtr dev, int what);
597extern _X_HIDDEN int CoreKeyboardProc(DeviceIntPtr dev, int what);
598
599#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