1 /*
2  * Copyright © 2000 Compaq Computer Corporation
3  * Copyright © 2002 Hewlett-Packard Company
4  * Copyright © 2006 Intel Corporation
5  * Copyright © 2008 Red Hat, Inc.
6  *
7  * Permission to use, copy, modify, distribute, and sell this software and its
8  * documentation for any purpose is hereby granted without fee, provided that
9  * the above copyright notice appear in all copies and that both that copyright
10  * notice and this permission notice appear in supporting documentation, and
11  * that the name of the copyright holders not be used in advertising or
12  * publicity pertaining to distribution of the software without specific,
13  * written prior permission.  The copyright holders make no representations
14  * about the suitability of this software for any purpose.  It is provided "as
15  * is" without express or implied warranty.
16  *
17  * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
18  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
19  * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
20  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
21  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
22  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
23  * OF THIS SOFTWARE.
24  *
25  * Author:  Jim Gettys, Hewlett-Packard Company, Inc.
26  *	    Keith Packard, Intel Corporation
27  */
28 
29 /* note that RANDR 1.0 is incompatible with version 0.0, or 0.1 */
30 /* V1.0 removes depth switching from the protocol */
31 #ifndef _XRANDRP_H_
32 #define _XRANDRP_H_
33 
34 #include <X11/extensions/randr.h>
35 #include <X11/extensions/renderproto.h>
36 
37 #define Window CARD32
38 #define Drawable CARD32
39 #define Font CARD32
40 #define Pixmap CARD32
41 #define Cursor CARD32
42 #define Colormap CARD32
43 #define GContext CARD32
44 #define Atom CARD32
45 #define Time CARD32
46 #define KeyCode CARD8
47 #define KeySym CARD32
48 #define RROutput CARD32
49 #define RRMode CARD32
50 #define RRCrtc CARD32
51 #define RRProvider CARD32
52 #define RRModeFlags CARD32
53 #define RRLease CARD32
54 
55 #define Rotation CARD16
56 #define SizeID CARD16
57 #define SubpixelOrder CARD16
58 
59 /*
60  * data structures
61  */
62 
63 typedef struct {
64     CARD16 widthInPixels;
65     CARD16 heightInPixels;
66     CARD16 widthInMillimeters;
67     CARD16 heightInMillimeters;
68 } xScreenSizes;
69 #define sz_xScreenSizes 8
70 
71 /*
72  * requests and replies
73  */
74 
75 typedef struct {
76     CARD8   reqType;
77     CARD8   randrReqType;
78     CARD16  length;
79     CARD32  majorVersion;
80     CARD32  minorVersion;
81 } xRRQueryVersionReq;
82 #define sz_xRRQueryVersionReq   12
83 
84 typedef struct {
85     BYTE    type;   /* X_Reply */
86     BYTE    pad1;
87     CARD16  sequenceNumber;
88     CARD32  length;
89     CARD32  majorVersion;
90     CARD32  minorVersion;
91     CARD32  pad2;
92     CARD32  pad3;
93     CARD32  pad4;
94     CARD32  pad5;
95 } xRRQueryVersionReply;
96 #define sz_xRRQueryVersionReply	32
97 
98 typedef struct {
99     CARD8   reqType;
100     CARD8   randrReqType;
101     CARD16  length;
102     Window  window;
103 } xRRGetScreenInfoReq;
104 #define sz_xRRGetScreenInfoReq   8
105 
106 /*
107  * the xRRScreenInfoReply structure is followed by:
108  *
109  * the size information
110  */
111 
112 
113 typedef struct {
114     BYTE    type;   /* X_Reply */
115     BYTE    setOfRotations;
116     CARD16  sequenceNumber;
117     CARD32  length;
118     Window  root;
119     Time    timestamp;
120     Time    configTimestamp;
121     CARD16  nSizes;
122     SizeID  sizeID;
123     Rotation  rotation;
124     CARD16  rate;
125     CARD16  nrateEnts;
126     CARD16  pad;
127 } xRRGetScreenInfoReply;
128 #define sz_xRRGetScreenInfoReply	32
129 
130 typedef struct {
131     CARD8    reqType;
132     CARD8    randrReqType;
133     CARD16   length;
134     Drawable drawable;
135     Time     timestamp;
136     Time     configTimestamp;
137     SizeID   sizeID;
138     Rotation rotation;
139 } xRR1_0SetScreenConfigReq;
140 #define sz_xRR1_0SetScreenConfigReq   20
141 
142 typedef struct {
143     CARD8    reqType;
144     CARD8    randrReqType;
145     CARD16   length;
146     Drawable drawable;
147     Time     timestamp;
148     Time     configTimestamp;
149     SizeID   sizeID;
150     Rotation rotation;
151     CARD16   rate;
152     CARD16   pad;
153 } xRRSetScreenConfigReq;
154 #define sz_xRRSetScreenConfigReq   24
155 
156 typedef struct {
157     BYTE    type;   /* X_Reply */
158     CARD8   status;
159     CARD16  sequenceNumber;
160     CARD32  length;
161     Time    newTimestamp;
162     Time    newConfigTimestamp;
163     Window  root;
164     CARD16  subpixelOrder;
165     CARD16  pad4;
166     CARD32  pad5;
167     CARD32  pad6;
168 } xRRSetScreenConfigReply;
169 #define sz_xRRSetScreenConfigReply 32
170 
171 typedef struct {
172     CARD8   reqType;
173     CARD8   randrReqType;
174     CARD16  length;
175     Window  window;
176     CARD16  enable;
177     CARD16  pad2;
178 } xRRSelectInputReq;
179 #define sz_xRRSelectInputReq   12
180 
181 /*
182  * Additions for version 1.2
183  */
184 
185 typedef struct _xRRModeInfo {
186     RRMode		id;
187     CARD16		width;
188     CARD16		height;
189     CARD32		dotClock;
190     CARD16		hSyncStart;
191     CARD16		hSyncEnd;
192     CARD16		hTotal;
193     CARD16		hSkew;
194     CARD16		vSyncStart;
195     CARD16		vSyncEnd;
196     CARD16		vTotal;
197     CARD16		nameLength;
198     RRModeFlags		modeFlags;
199 } xRRModeInfo;
200 #define sz_xRRModeInfo		    32
201 
202 typedef struct {
203     CARD8   reqType;
204     CARD8   randrReqType;
205     CARD16  length;
206     Window  window;
207 } xRRGetScreenSizeRangeReq;
208 #define sz_xRRGetScreenSizeRangeReq 8
209 
210 typedef struct {
211     BYTE    type;   /* X_Reply */
212     CARD8   pad;
213     CARD16  sequenceNumber;
214     CARD32  length;
215     CARD16  minWidth;
216     CARD16  minHeight;
217     CARD16  maxWidth;
218     CARD16  maxHeight;
219     CARD32  pad0;
220     CARD32  pad1;
221     CARD32  pad2;
222     CARD32  pad3;
223 } xRRGetScreenSizeRangeReply;
224 #define sz_xRRGetScreenSizeRangeReply 32
225 
226 typedef struct {
227     CARD8   reqType;
228     CARD8   randrReqType;
229     CARD16  length;
230     Window  window;
231     CARD16  width;
232     CARD16  height;
233     CARD32  widthInMillimeters;
234     CARD32  heightInMillimeters;
235 } xRRSetScreenSizeReq;
236 #define sz_xRRSetScreenSizeReq	    20
237 
238 typedef struct {
239     CARD8   reqType;
240     CARD8   randrReqType;
241     CARD16  length;
242     Window  window;
243 } xRRGetScreenResourcesReq;
244 #define sz_xRRGetScreenResourcesReq 8
245 
246 typedef struct {
247     BYTE	type;
248     CARD8	pad;
249     CARD16	sequenceNumber;
250     CARD32	length;
251     Time	timestamp;
252     Time	configTimestamp;
253     CARD16	nCrtcs;
254     CARD16	nOutputs;
255     CARD16	nModes;
256     CARD16	nbytesNames;
257     CARD32	pad1;
258     CARD32	pad2;
259 } xRRGetScreenResourcesReply;
260 #define sz_xRRGetScreenResourcesReply	32
261 
262 typedef struct {
263     CARD8	reqType;
264     CARD8	randrReqType;
265     CARD16	length;
266     RROutput	output;
267     Time	configTimestamp;
268 } xRRGetOutputInfoReq;
269 #define sz_xRRGetOutputInfoReq		12
270 
271 typedef struct {
272     BYTE	type;
273     CARD8	status;
274     CARD16	sequenceNumber;
275     CARD32	length;
276     Time	timestamp;
277     RRCrtc	crtc;
278     CARD32	mmWidth;
279     CARD32	mmHeight;
280     CARD8	connection;
281     CARD8	subpixelOrder;
282     CARD16	nCrtcs;
283     CARD16	nModes;
284     CARD16	nPreferred;
285     CARD16	nClones;
286     CARD16	nameLength;
287 } xRRGetOutputInfoReply;
288 #define sz_xRRGetOutputInfoReply	36
289 
290 typedef struct {
291     CARD8	reqType;
292     CARD8	randrReqType;
293     CARD16	length;
294     RROutput	output;
295 } xRRListOutputPropertiesReq;
296 #define sz_xRRListOutputPropertiesReq	8
297 
298 typedef struct {
299     BYTE	type;
300     CARD8	pad0;
301     CARD16	sequenceNumber;
302     CARD32	length;
303     CARD16	nAtoms;
304     CARD16	pad1;
305     CARD32	pad2;
306     CARD32	pad3;
307     CARD32	pad4;
308     CARD32	pad5;
309     CARD32	pad6;
310 } xRRListOutputPropertiesReply;
311 #define sz_xRRListOutputPropertiesReply	32
312 
313 typedef struct {
314     CARD8	reqType;
315     CARD8	randrReqType;
316     CARD16	length;
317     RROutput	output;
318     Atom	property;
319 } xRRQueryOutputPropertyReq;
320 #define sz_xRRQueryOutputPropertyReq	12
321 
322 typedef struct {
323     BYTE	type;
324     BYTE	pad0;
325     CARD16	sequenceNumber;
326     CARD32	length;
327     BOOL	pending;
328     BOOL	range;
329     BOOL	immutable;
330     BYTE	pad1;
331     CARD32	pad2;
332     CARD32	pad3;
333     CARD32	pad4;
334     CARD32	pad5;
335     CARD32	pad6;
336 } xRRQueryOutputPropertyReply;
337 #define sz_xRRQueryOutputPropertyReply	32
338 
339 typedef struct {
340     CARD8	reqType;
341     CARD8	randrReqType;
342     CARD16	length;
343     RROutput	output;
344     Atom	property;
345     BOOL	pending;
346     BOOL	range;
347     CARD16	pad;
348 } xRRConfigureOutputPropertyReq;
349 #define sz_xRRConfigureOutputPropertyReq	16
350 
351 typedef struct {
352     CARD8	reqType;
353     CARD8	randrReqType;
354     CARD16	length;
355     RROutput	output;
356     Atom	property;
357     Atom	type;
358     CARD8	format;
359     CARD8	mode;
360     CARD16	pad;
361     CARD32	nUnits;
362 } xRRChangeOutputPropertyReq;
363 #define sz_xRRChangeOutputPropertyReq	24
364 
365 typedef struct {
366     CARD8	reqType;
367     CARD8	randrReqType;
368     CARD16	length;
369     RROutput	output;
370     Atom	property;
371 } xRRDeleteOutputPropertyReq;
372 #define sz_xRRDeleteOutputPropertyReq	12
373 
374 typedef struct {
375     CARD8	reqType;
376     CARD8	randrReqType;
377     CARD16	length;
378     RROutput	output;
379     Atom	property;
380     Atom	type;
381     CARD32	longOffset;
382     CARD32	longLength;
383 #ifdef __cplusplus
384     BOOL	_delete;
385 #else
386     BOOL	delete;
387 #endif
388     BOOL	pending;
389     CARD16	pad1;
390 } xRRGetOutputPropertyReq;
391 #define sz_xRRGetOutputPropertyReq	28
392 
393 typedef struct {
394     BYTE	type;
395     CARD8	format;
396     CARD16	sequenceNumber;
397     CARD32	length;
398     Atom	propertyType;
399     CARD32	bytesAfter;
400     CARD32	nItems;
401     CARD32	pad1;
402     CARD32	pad2;
403     CARD32	pad3;
404 } xRRGetOutputPropertyReply;
405 #define sz_xRRGetOutputPropertyReply	32
406 
407 typedef struct {
408     CARD8	reqType;
409     CARD8	randrReqType;
410     CARD16	length;
411     Window	window;
412     xRRModeInfo	modeInfo;
413 } xRRCreateModeReq;
414 #define sz_xRRCreateModeReq		40
415 
416 typedef struct {
417     BYTE	type;
418     CARD8	pad0;
419     CARD16	sequenceNumber;
420     CARD32	length;
421     RRMode	mode;
422     CARD32	pad1;
423     CARD32	pad2;
424     CARD32	pad3;
425     CARD32	pad4;
426     CARD32	pad5;
427 } xRRCreateModeReply;
428 #define sz_xRRCreateModeReply		32
429 
430 typedef struct {
431     CARD8	reqType;
432     CARD8	randrReqType;
433     CARD16	length;
434     RRMode	mode;
435 } xRRDestroyModeReq;
436 #define sz_xRRDestroyModeReq		8
437 
438 typedef struct {
439     CARD8	reqType;
440     CARD8	randrReqType;
441     CARD16	length;
442     RROutput	output;
443     RRMode	mode;
444 } xRRAddOutputModeReq;
445 #define sz_xRRAddOutputModeReq		12
446 
447 typedef struct {
448     CARD8	reqType;
449     CARD8	randrReqType;
450     CARD16	length;
451     RROutput	output;
452     RRMode	mode;
453 } xRRDeleteOutputModeReq;
454 #define sz_xRRDeleteOutputModeReq	12
455 
456 typedef struct {
457     CARD8	reqType;
458     CARD8	randrReqType;
459     CARD16	length;
460     RRCrtc	crtc;
461     Time	configTimestamp;
462 } xRRGetCrtcInfoReq;
463 #define sz_xRRGetCrtcInfoReq		12
464 
465 typedef struct {
466     BYTE	type;
467     CARD8	status;
468     CARD16	sequenceNumber;
469     CARD32	length;
470     Time	timestamp;
471     INT16	x;
472     INT16	y;
473     CARD16	width;
474     CARD16	height;
475     RRMode	mode;
476     Rotation	rotation;
477     Rotation	rotations;
478     CARD16	nOutput;
479     CARD16	nPossibleOutput;
480 } xRRGetCrtcInfoReply;
481 #define sz_xRRGetCrtcInfoReply		32
482 
483 typedef struct {
484     CARD8	reqType;
485     CARD8	randrReqType;
486     CARD16	length;
487     RRCrtc	crtc;
488     Time	timestamp;
489     Time    	configTimestamp;
490     INT16	x;
491     INT16	y;
492     RRMode	mode;
493     Rotation	rotation;
494     CARD16	pad;
495 } xRRSetCrtcConfigReq;
496 #define sz_xRRSetCrtcConfigReq		28
497 
498 typedef struct {
499     BYTE	type;
500     CARD8	status;
501     CARD16	sequenceNumber;
502     CARD32	length;
503     Time	newTimestamp;
504     CARD32	pad1;
505     CARD32	pad2;
506     CARD32	pad3;
507     CARD32	pad4;
508     CARD32	pad5;
509 } xRRSetCrtcConfigReply;
510 #define sz_xRRSetCrtcConfigReply	32
511 
512 typedef struct {
513     CARD8	reqType;
514     CARD8	randrReqType;
515     CARD16	length;
516     RRCrtc	crtc;
517 } xRRGetCrtcGammaSizeReq;
518 #define sz_xRRGetCrtcGammaSizeReq	8
519 
520 typedef struct {
521     BYTE	type;
522     CARD8	status;
523     CARD16	sequenceNumber;
524     CARD32	length;
525     CARD16	size;
526     CARD16	pad1;
527     CARD32	pad2;
528     CARD32	pad3;
529     CARD32	pad4;
530     CARD32	pad5;
531     CARD32	pad6;
532 } xRRGetCrtcGammaSizeReply;
533 #define sz_xRRGetCrtcGammaSizeReply	32
534 
535 typedef struct {
536     CARD8	reqType;
537     CARD8	randrReqType;
538     CARD16	length;
539     RRCrtc	crtc;
540 } xRRGetCrtcGammaReq;
541 #define sz_xRRGetCrtcGammaReq		8
542 
543 typedef struct {
544     BYTE	type;
545     CARD8	status;
546     CARD16	sequenceNumber;
547     CARD32	length;
548     CARD16	size;
549     CARD16	pad1;
550     CARD32	pad2;
551     CARD32	pad3;
552     CARD32	pad4;
553     CARD32	pad5;
554     CARD32	pad6;
555 } xRRGetCrtcGammaReply;
556 #define sz_xRRGetCrtcGammaReply		32
557 
558 typedef struct {
559     CARD8	reqType;
560     CARD8	randrReqType;
561     CARD16	length;
562     RRCrtc	crtc;
563     CARD16	size;
564     CARD16	pad1;
565 } xRRSetCrtcGammaReq;
566 #define sz_xRRSetCrtcGammaReq		12
567 
568 /*
569  * Additions for V1.3
570  */
571 
572 typedef xRRGetScreenResourcesReq xRRGetScreenResourcesCurrentReq;
573 
574 #define sz_xRRGetScreenResourcesCurrentReq sz_xRRGetScreenResourcesReq
575 
576 typedef xRRGetScreenResourcesReply xRRGetScreenResourcesCurrentReply;
577 #define sz_xRRGetScreenResourcesCurrentReply	sz_xRRGetScreenResourcesReply
578 
579 typedef struct {
580     CARD8		reqType;
581     CARD8		randrReqType;
582     CARD16		length;
583     RRCrtc		crtc;
584     xRenderTransform	transform;
585     CARD16		nbytesFilter;	/* number of bytes in filter name */
586     CARD16		pad;
587 } xRRSetCrtcTransformReq;
588 
589 #define sz_xRRSetCrtcTransformReq	48
590 
591 typedef struct {
592     CARD8		reqType;
593     CARD8		randrReqType;
594     CARD16		length;
595     RRCrtc		crtc;
596 } xRRGetCrtcTransformReq;
597 
598 #define sz_xRRGetCrtcTransformReq	8
599 
600 typedef struct {
601     BYTE		type;
602     CARD8		status;
603     CARD16		sequenceNumber;
604     CARD32		length;
605     xRenderTransform	pendingTransform;
606     BYTE		hasTransforms;
607     CARD8		pad0;
608     CARD16		pad1;
609     xRenderTransform	currentTransform;
610     CARD32		pad2;
611     CARD16		pendingNbytesFilter;    /* number of bytes in filter name */
612     CARD16		pendingNparamsFilter;   /* number of filter params */
613     CARD16		currentNbytesFilter;    /* number of bytes in filter name */
614     CARD16		currentNparamsFilter;   /* number of filter params */
615 } xRRGetCrtcTransformReply;
616 
617 #define sz_xRRGetCrtcTransformReply	96
618 
619 typedef struct {
620     CARD8	reqType;
621     CARD8	randrReqType;
622     CARD16	length;
623     Window	window;
624     RROutput	output;
625 } xRRSetOutputPrimaryReq;
626 #define sz_xRRSetOutputPrimaryReq	12
627 
628 typedef struct {
629     CARD8	reqType;
630     CARD8	randrReqType;
631     CARD16	length;
632     Window	window;
633 } xRRGetOutputPrimaryReq;
634 #define sz_xRRGetOutputPrimaryReq	8
635 
636 typedef struct {
637     BYTE	type;
638     CARD8	pad;
639     CARD16	sequenceNumber;
640     CARD32	length;
641     RROutput	output;
642     CARD32	pad1;
643     CARD32	pad2;
644     CARD32	pad3;
645     CARD32	pad4;
646     CARD32	pad5;
647 } xRRGetOutputPrimaryReply;
648 #define sz_xRRGetOutputPrimaryReply	32
649 
650 /*
651  * Additions for V1.4
652  */
653 
654 typedef struct {
655     CARD8	reqType;
656     CARD8	randrReqType;
657     CARD16	length;
658     Window	window;
659 } xRRGetProvidersReq;
660 #define sz_xRRGetProvidersReq 8
661 
662 typedef struct {
663     BYTE	type;
664     CARD8	pad;
665     CARD16	sequenceNumber;
666     CARD32	length;
667     Time	timestamp;
668     CARD16	nProviders;
669     CARD16	pad1;
670     CARD32	pad2;
671     CARD32	pad3;
672     CARD32	pad4;
673     CARD32	pad5;
674 } xRRGetProvidersReply;
675 #define sz_xRRGetProvidersReply 32
676 
677 typedef struct {
678     CARD8	reqType;
679     CARD8	randrReqType;
680     CARD16	length;
681     RRProvider	provider;
682     Time	configTimestamp;
683 } xRRGetProviderInfoReq;
684 #define sz_xRRGetProviderInfoReq 12
685 
686 typedef struct {
687     BYTE	type;
688     CARD8	status;
689     CARD16	sequenceNumber;
690     CARD32	length;
691     Time	timestamp;
692     CARD32	capabilities;
693     CARD16	nCrtcs;
694     CARD16	nOutputs;
695     CARD16	nAssociatedProviders;
696     CARD16	nameLength;
697     CARD32	pad1;
698     CARD32	pad2;
699 } xRRGetProviderInfoReply;
700 #define sz_xRRGetProviderInfoReply 32
701 
702 typedef struct {
703     CARD8	reqType;
704     CARD8	randrReqType;
705     CARD16	length;
706     RRProvider  provider;
707     RRProvider  source_provider;
708     Time	configTimestamp;
709 } xRRSetProviderOutputSourceReq;
710 #define sz_xRRSetProviderOutputSourceReq 16
711 
712 typedef struct {
713     CARD8	reqType;
714     CARD8	randrReqType;
715     CARD16	length;
716     RRProvider  provider;
717     RRProvider  sink_provider;
718     Time	configTimestamp;
719 } xRRSetProviderOffloadSinkReq;
720 #define sz_xRRSetProviderOffloadSinkReq 16
721 
722 typedef struct {
723     CARD8	reqType;
724     CARD8	randrReqType;
725     CARD16	length;
726     RRProvider	provider;
727 } xRRListProviderPropertiesReq;
728 #define sz_xRRListProviderPropertiesReq	8
729 
730 typedef struct {
731     BYTE	type;
732     CARD8	pad0;
733     CARD16	sequenceNumber;
734     CARD32	length;
735     CARD16	nAtoms;
736     CARD16	pad1;
737     CARD32	pad2;
738     CARD32	pad3;
739     CARD32	pad4;
740     CARD32	pad5;
741     CARD32	pad6;
742 } xRRListProviderPropertiesReply;
743 #define sz_xRRListProviderPropertiesReply	32
744 
745 typedef struct {
746     CARD8	reqType;
747     CARD8	randrReqType;
748     CARD16	length;
749     RRProvider	provider;
750     Atom	property;
751 } xRRQueryProviderPropertyReq;
752 #define sz_xRRQueryProviderPropertyReq	12
753 
754 typedef struct {
755     BYTE	type;
756     BYTE	pad0;
757     CARD16	sequenceNumber;
758     CARD32	length;
759     BOOL	pending;
760     BOOL	range;
761     BOOL	immutable;
762     BYTE	pad1;
763     CARD32	pad2;
764     CARD32	pad3;
765     CARD32	pad4;
766     CARD32	pad5;
767     CARD32	pad6;
768 } xRRQueryProviderPropertyReply;
769 #define sz_xRRQueryProviderPropertyReply	32
770 
771 typedef struct {
772     CARD8	reqType;
773     CARD8	randrReqType;
774     CARD16	length;
775     RRProvider	provider;
776     Atom	property;
777     BOOL	pending;
778     BOOL	range;
779     CARD16	pad;
780 } xRRConfigureProviderPropertyReq;
781 #define sz_xRRConfigureProviderPropertyReq	16
782 
783 typedef struct {
784     CARD8	reqType;
785     CARD8	randrReqType;
786     CARD16	length;
787     RRProvider	provider;
788     Atom	property;
789     Atom	type;
790     CARD8	format;
791     CARD8	mode;
792     CARD16	pad;
793     CARD32	nUnits;
794 } xRRChangeProviderPropertyReq;
795 #define sz_xRRChangeProviderPropertyReq	24
796 
797 typedef struct {
798     CARD8	reqType;
799     CARD8	randrReqType;
800     CARD16	length;
801     RRProvider	provider;
802     Atom	property;
803 } xRRDeleteProviderPropertyReq;
804 #define sz_xRRDeleteProviderPropertyReq	12
805 
806 typedef struct {
807     CARD8	reqType;
808     CARD8	randrReqType;
809     CARD16	length;
810     RRProvider	provider;
811     Atom	property;
812     Atom	type;
813     CARD32	longOffset;
814     CARD32	longLength;
815 #ifdef __cplusplus
816     BOOL	_delete;
817 #else
818     BOOL	delete;
819 #endif
820     BOOL	pending;
821     CARD16	pad1;
822 } xRRGetProviderPropertyReq;
823 #define sz_xRRGetProviderPropertyReq	28
824 
825 typedef struct {
826     BYTE	type;
827     CARD8	format;
828     CARD16	sequenceNumber;
829     CARD32	length;
830     Atom	propertyType;
831     CARD32	bytesAfter;
832     CARD32	nItems;
833     CARD32	pad1;
834     CARD32	pad2;
835     CARD32	pad3;
836 } xRRGetProviderPropertyReply;
837 #define sz_xRRGetProviderPropertyReply	32
838 
839 /*
840  * Additions for V1.6
841  */
842 
843 typedef struct {
844     CARD8	reqType;
845     CARD8	randrReqType;
846     CARD16	length;
847     Window	window;
848     RRLease	lid;
849     CARD16	nCrtcs;
850     CARD16	nOutputs;
851 } xRRCreateLeaseReq;
852 #define sz_xRRCreateLeaseReq	16
853 
854 typedef struct {
855     BYTE	type;
856     CARD8	nfd;
857     CARD16	sequenceNumber;
858     CARD32	length;
859     CARD32	pad2;
860     CARD32	pad3;
861     CARD32	pad4;
862     CARD32	pad5;
863     CARD32	pad6;
864     CARD32	pad7;
865 } xRRCreateLeaseReply;
866 #define sz_xRRCreateLeaseReply		32
867 
868 typedef struct {
869     CARD8	reqType;
870     CARD8	randrReqType;
871     CARD16	length;
872     RRLease	lid;
873     BYTE	terminate;
874     CARD8	pad1;
875     CARD16	pad2;
876 } xRRFreeLeaseReq;
877 #define sz_xRRFreeLeaseReq		12
878 
879 /*
880  * event
881  */
882 typedef struct {
883     CARD8 type;				/* always evBase + ScreenChangeNotify */
884     CARD8 rotation;			/* new rotation */
885     CARD16 sequenceNumber;
886     Time timestamp;			/* time screen was changed */
887     Time configTimestamp;		/* time config data was changed */
888     Window root;			/* root window */
889     Window window;			/* window requesting notification */
890     SizeID sizeID;			/* new size ID */
891     CARD16 subpixelOrder;		/* subpixel order */
892     CARD16 widthInPixels;		/* new size */
893     CARD16 heightInPixels;
894     CARD16 widthInMillimeters;
895     CARD16 heightInMillimeters;
896 } xRRScreenChangeNotifyEvent;
897 #define sz_xRRScreenChangeNotifyEvent	32
898 
899 typedef struct {
900     CARD8 type;				/* always evBase + RRNotify */
901     CARD8 subCode;			/* RRNotify_CrtcChange */
902     CARD16 sequenceNumber;
903     Time timestamp;			/* time crtc was changed */
904     Window window;			/* window requesting notification */
905     RRCrtc crtc;			/* affected CRTC */
906     RRMode mode;			/* current mode */
907     CARD16 rotation;			/* rotation and reflection */
908     CARD16 pad1;			/* unused */
909     INT16 x;				/* new location */
910     INT16 y;
911     CARD16 width;			/* new size */
912     CARD16 height;
913 } xRRCrtcChangeNotifyEvent;
914 #define sz_xRRCrtcChangeNotifyEvent	32
915 
916 typedef struct {
917     CARD8 type;				/* always evBase + RRNotify */
918     CARD8 subCode;			/* RRNotify_OutputChange */
919     CARD16 sequenceNumber;
920     Time timestamp;			/* time output was changed */
921     Time configTimestamp;		/* time config was changed */
922     Window window;			/* window requesting notification */
923     RROutput output;			/* affected output */
924     RRCrtc crtc;			/* current crtc */
925     RRMode mode;			/* current mode */
926     CARD16 rotation;			/* rotation and reflection */
927     CARD8 connection;			/* connection status */
928     CARD8 subpixelOrder;		/* subpixel order */
929 } xRROutputChangeNotifyEvent;
930 #define sz_xRROutputChangeNotifyEvent	32
931 
932 typedef struct {
933     CARD8 type;				/* always evBase + RRNotify */
934     CARD8 subCode;			/* RRNotify_OutputProperty */
935     CARD16 sequenceNumber;
936     Window window;			/* window requesting notification */
937     RROutput output;			/* affected output */
938     Atom atom;				/* property name */
939     Time timestamp;			/* time crtc was changed */
940     CARD8 state;			/* NewValue or Deleted */
941     CARD8 pad1;
942     CARD16 pad2;
943     CARD32 pad3;
944     CARD32 pad4;
945 } xRROutputPropertyNotifyEvent;
946 #define sz_xRROutputPropertyNotifyEvent	32
947 
948 typedef struct {
949     CARD8 type;				/* always evBase + RRNotify */
950     CARD8 subCode;			/* RRNotify_ProviderChange */
951     CARD16 sequenceNumber;
952     Time timestamp;			/* time provider was changed */
953     Window window;			/* window requesting notification */
954     RRProvider provider;		/* affected provider */
955     CARD32 pad1;
956     CARD32 pad2;
957     CARD32 pad3;
958     CARD32 pad4;
959 } xRRProviderChangeNotifyEvent;
960 #define sz_xRRProviderChangeNotifyEvent	32
961 
962 typedef struct {
963     CARD8 type;				/* always evBase + RRNotify */
964     CARD8 subCode;			/* RRNotify_ProviderProperty */
965     CARD16 sequenceNumber;
966     Window window;			/* window requesting notification */
967     RRProvider provider;		/* affected provider */
968     Atom atom;				/* property name */
969     Time timestamp;			/* time provider was changed */
970     CARD8 state;			/* NewValue or Deleted */
971     CARD8 pad1;
972     CARD16 pad2;
973     CARD32 pad3;
974     CARD32 pad4;
975 } xRRProviderPropertyNotifyEvent;
976 #define sz_xRRProviderPropertyNotifyEvent	32
977 
978 typedef struct {
979     CARD8 type;				/* always evBase + RRNotify */
980     CARD8 subCode;			/* RRNotify_ResourceChange */
981     CARD16 sequenceNumber;
982     Time timestamp;			/* time resource was changed */
983     Window window;			/* window requesting notification */
984     CARD32 pad1;
985     CARD32 pad2;
986     CARD32 pad3;
987     CARD32 pad4;
988     CARD32 pad5;
989 } xRRResourceChangeNotifyEvent;
990 #define sz_xRRResourceChangeNotifyEvent	32
991 
992 typedef struct {
993     CARD8 type;				/* always evBase + RRNotify */
994     CARD8 subCode;			/* RRNotify_Lease */
995     CARD16 sequenceNumber;
996     Time timestamp;			/* time resource was changed */
997     Window window;			/* window requesting notification */
998     RRLease lease;
999     CARD8 created;			/* created/deleted */
1000     CARD8 pad0;
1001     CARD16 pad1;
1002     CARD32 pad2;
1003     CARD32 pad3;
1004     CARD32 pad4;
1005 } xRRLeaseNotifyEvent;
1006 #define sz_xRRLeaseNotifyEvent		32
1007 
1008 typedef struct {
1009     CARD8	reqType;
1010     CARD8	randrReqType;
1011     CARD16	length;
1012     RRCrtc	crtc;
1013 } xRRGetPanningReq;
1014 #define sz_xRRGetPanningReq		8
1015 
1016 typedef struct {
1017     BYTE	type;
1018     CARD8	status;
1019     CARD16	sequenceNumber;
1020     CARD32	length;
1021     Time	timestamp;
1022     CARD16	left;
1023     CARD16	top;
1024     CARD16	width;
1025     CARD16	height;
1026     CARD16	track_left;
1027     CARD16	track_top;
1028     CARD16	track_width;
1029     CARD16	track_height;
1030     INT16	border_left;
1031     INT16	border_top;
1032     INT16	border_right;
1033     INT16	border_bottom;
1034 } xRRGetPanningReply;
1035 #define sz_xRRGetPanningReply		36
1036 
1037 typedef struct {
1038     CARD8	reqType;
1039     CARD8	randrReqType;
1040     CARD16	length;
1041     RRCrtc	crtc;
1042     Time	timestamp;
1043     CARD16	left;
1044     CARD16	top;
1045     CARD16	width;
1046     CARD16	height;
1047     CARD16	track_left;
1048     CARD16	track_top;
1049     CARD16	track_width;
1050     CARD16	track_height;
1051     INT16	border_left;
1052     INT16	border_top;
1053     INT16	border_right;
1054     INT16	border_bottom;
1055 } xRRSetPanningReq;
1056 #define sz_xRRSetPanningReq		36
1057 
1058 typedef struct {
1059     BYTE	type;
1060     CARD8	status;
1061     CARD16	sequenceNumber;
1062     CARD32	length;
1063     Time	newTimestamp;
1064     CARD32	pad1;
1065     CARD32	pad2;
1066     CARD32	pad3;
1067     CARD32	pad4;
1068     CARD32	pad5;
1069 } xRRSetPanningReply;
1070 #define sz_xRRSetPanningReply	32
1071 
1072 typedef struct {
1073     Atom	name;
1074     BOOL	primary;
1075     BOOL	automatic;
1076     CARD16	noutput;
1077     INT16	x;
1078     INT16	y;
1079     CARD16	width;
1080     CARD16	height;
1081     CARD32	widthInMillimeters;
1082     CARD32	heightInMillimeters;
1083 } xRRMonitorInfo;
1084 #define sz_xRRMonitorInfo	24
1085 
1086 typedef struct {
1087     CARD8	reqType;
1088     CARD8	randrReqType;
1089     CARD16	length;
1090     Window	window;
1091     BOOL	get_active;
1092     CARD8	pad;
1093     CARD16	pad2;
1094 } xRRGetMonitorsReq;
1095 #define sz_xRRGetMonitorsReq	12
1096 
1097 typedef struct {
1098     BYTE	type;
1099     CARD8	status;
1100     CARD16	sequenceNumber;
1101     CARD32	length;
1102     Time	timestamp;
1103     CARD32	nmonitors;
1104     CARD32	noutputs;
1105     CARD32	pad1;
1106     CARD32	pad2;
1107     CARD32	pad3;
1108 } xRRGetMonitorsReply;
1109 #define sz_xRRGetMonitorsReply	32
1110 
1111 typedef struct {
1112     CARD8	reqType;
1113     CARD8	randrReqType;
1114     CARD16	length;
1115     Window	window;
1116     xRRMonitorInfo	monitor;
1117 } xRRSetMonitorReq;
1118 #define sz_xRRSetMonitorReq	32
1119 
1120 typedef struct {
1121     CARD8	reqType;
1122     CARD8	randrReqType;
1123     CARD16	length;
1124     Window	window;
1125     Atom	name;
1126 } xRRDeleteMonitorReq;
1127 #define sz_xRRDeleteMonitorReq	12
1128 
1129 #undef RRLease
1130 #undef RRModeFlags
1131 #undef RRCrtc
1132 #undef RRMode
1133 #undef RROutput
1134 #undef RRMode
1135 #undef RRCrtc
1136 #undef RRProvider
1137 #undef Drawable
1138 #undef Window
1139 #undef Font
1140 #undef Pixmap
1141 #undef Cursor
1142 #undef Colormap
1143 #undef GContext
1144 #undef Atom
1145 #undef Time
1146 #undef KeyCode
1147 #undef KeySym
1148 #undef Rotation
1149 #undef SizeID
1150 #undef SubpixelOrder
1151 
1152 #endif /* _XRANDRP_H_ */
1153