117ca54c3Smrg/*
217ca54c3Smrg * Copyright © 2000 Compaq Computer Corporation
317ca54c3Smrg * Copyright © 2002 Hewlett-Packard Company
417ca54c3Smrg * Copyright © 2006 Intel Corporation
517ca54c3Smrg * Copyright © 2008 Red Hat, Inc.
617ca54c3Smrg *
717ca54c3Smrg * Permission to use, copy, modify, distribute, and sell this software and its
817ca54c3Smrg * documentation for any purpose is hereby granted without fee, provided that
917ca54c3Smrg * the above copyright notice appear in all copies and that both that copyright
1017ca54c3Smrg * notice and this permission notice appear in supporting documentation, and
1117ca54c3Smrg * that the name of the copyright holders not be used in advertising or
1217ca54c3Smrg * publicity pertaining to distribution of the software without specific,
1317ca54c3Smrg * written prior permission.  The copyright holders make no representations
1417ca54c3Smrg * about the suitability of this software for any purpose.  It is provided "as
1517ca54c3Smrg * is" without express or implied warranty.
1617ca54c3Smrg *
1717ca54c3Smrg * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
1817ca54c3Smrg * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
1917ca54c3Smrg * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
2017ca54c3Smrg * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
2117ca54c3Smrg * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
2217ca54c3Smrg * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
2317ca54c3Smrg * OF THIS SOFTWARE.
2417ca54c3Smrg *
2517ca54c3Smrg * Author:  Jim Gettys, Hewlett-Packard Company, Inc.
2617ca54c3Smrg *	    Keith Packard, Intel Corporation
2717ca54c3Smrg */
2817ca54c3Smrg
2917ca54c3Smrg/* note that RANDR 1.0 is incompatible with version 0.0, or 0.1 */
3017ca54c3Smrg/* V1.0 removes depth switching from the protocol */
3117ca54c3Smrg#ifndef _XRANDRP_H_
3217ca54c3Smrg#define _XRANDRP_H_
3317ca54c3Smrg
3417ca54c3Smrg#include <X11/extensions/randr.h>
3517ca54c3Smrg#include <X11/extensions/renderproto.h>
3617ca54c3Smrg
3717ca54c3Smrg#define Window CARD32
3817ca54c3Smrg#define Drawable CARD32
3917ca54c3Smrg#define Font CARD32
4017ca54c3Smrg#define Pixmap CARD32
4117ca54c3Smrg#define Cursor CARD32
4217ca54c3Smrg#define Colormap CARD32
4317ca54c3Smrg#define GContext CARD32
4417ca54c3Smrg#define Atom CARD32
4517ca54c3Smrg#define Time CARD32
4617ca54c3Smrg#define KeyCode CARD8
4717ca54c3Smrg#define KeySym CARD32
48b150493bSchristos
49b150493bSchristos/* All also defined in <randr/randrstr.h> */
50b150493bSchristos#ifndef RROutput
5117ca54c3Smrg#define RROutput CARD32
5217ca54c3Smrg#define RRMode CARD32
5317ca54c3Smrg#define RRCrtc CARD32
5417ca54c3Smrg#define RRProvider CARD32
5517ca54c3Smrg#define RRModeFlags CARD32
5617ca54c3Smrg#define RRLease CARD32
57b150493bSchristos#endif
5817ca54c3Smrg
5917ca54c3Smrg#define Rotation CARD16
6017ca54c3Smrg#define SizeID CARD16
6117ca54c3Smrg#define SubpixelOrder CARD16
6217ca54c3Smrg
6317ca54c3Smrg/*
6417ca54c3Smrg * data structures
6517ca54c3Smrg */
6617ca54c3Smrg
6717ca54c3Smrgtypedef struct {
68b54d2093Smrg    CARD16 widthInPixels;
69b54d2093Smrg    CARD16 heightInPixels;
70b54d2093Smrg    CARD16 widthInMillimeters;
71b54d2093Smrg    CARD16 heightInMillimeters;
7217ca54c3Smrg} xScreenSizes;
7317ca54c3Smrg#define sz_xScreenSizes 8
7417ca54c3Smrg
75b54d2093Smrg/*
7617ca54c3Smrg * requests and replies
7717ca54c3Smrg */
7817ca54c3Smrg
7917ca54c3Smrgtypedef struct {
8017ca54c3Smrg    CARD8   reqType;
8117ca54c3Smrg    CARD8   randrReqType;
82b54d2093Smrg    CARD16  length;
83b54d2093Smrg    CARD32  majorVersion;
84b54d2093Smrg    CARD32  minorVersion;
8517ca54c3Smrg} xRRQueryVersionReq;
8617ca54c3Smrg#define sz_xRRQueryVersionReq   12
8717ca54c3Smrg
8817ca54c3Smrgtypedef struct {
8917ca54c3Smrg    BYTE    type;   /* X_Reply */
9017ca54c3Smrg    BYTE    pad1;
91b54d2093Smrg    CARD16  sequenceNumber;
92b54d2093Smrg    CARD32  length;
93b54d2093Smrg    CARD32  majorVersion;
94b54d2093Smrg    CARD32  minorVersion;
95b54d2093Smrg    CARD32  pad2;
96b54d2093Smrg    CARD32  pad3;
97b54d2093Smrg    CARD32  pad4;
98b54d2093Smrg    CARD32  pad5;
9917ca54c3Smrg} xRRQueryVersionReply;
10017ca54c3Smrg#define sz_xRRQueryVersionReply	32
10117ca54c3Smrg
10217ca54c3Smrgtypedef struct {
10317ca54c3Smrg    CARD8   reqType;
10417ca54c3Smrg    CARD8   randrReqType;
105b54d2093Smrg    CARD16  length;
106b54d2093Smrg    Window  window;
10717ca54c3Smrg} xRRGetScreenInfoReq;
10817ca54c3Smrg#define sz_xRRGetScreenInfoReq   8
10917ca54c3Smrg
110b54d2093Smrg/*
11117ca54c3Smrg * the xRRScreenInfoReply structure is followed by:
11217ca54c3Smrg *
11317ca54c3Smrg * the size information
11417ca54c3Smrg */
11517ca54c3Smrg
11617ca54c3Smrg
11717ca54c3Smrgtypedef struct {
11817ca54c3Smrg    BYTE    type;   /* X_Reply */
11917ca54c3Smrg    BYTE    setOfRotations;
120b54d2093Smrg    CARD16  sequenceNumber;
121b54d2093Smrg    CARD32  length;
122b54d2093Smrg    Window  root;
123b54d2093Smrg    Time    timestamp;
124b54d2093Smrg    Time    configTimestamp;
125b54d2093Smrg    CARD16  nSizes;
126b54d2093Smrg    SizeID  sizeID;
127b54d2093Smrg    Rotation  rotation;
128b54d2093Smrg    CARD16  rate;
129b54d2093Smrg    CARD16  nrateEnts;
130b54d2093Smrg    CARD16  pad;
13117ca54c3Smrg} xRRGetScreenInfoReply;
13217ca54c3Smrg#define sz_xRRGetScreenInfoReply	32
13317ca54c3Smrg
13417ca54c3Smrgtypedef struct {
13517ca54c3Smrg    CARD8    reqType;
13617ca54c3Smrg    CARD8    randrReqType;
137b54d2093Smrg    CARD16   length;
138b54d2093Smrg    Drawable drawable;
139b54d2093Smrg    Time     timestamp;
140b54d2093Smrg    Time     configTimestamp;
141b54d2093Smrg    SizeID   sizeID;
142b54d2093Smrg    Rotation rotation;
14317ca54c3Smrg} xRR1_0SetScreenConfigReq;
14417ca54c3Smrg#define sz_xRR1_0SetScreenConfigReq   20
14517ca54c3Smrg
14617ca54c3Smrgtypedef struct {
14717ca54c3Smrg    CARD8    reqType;
14817ca54c3Smrg    CARD8    randrReqType;
149b54d2093Smrg    CARD16   length;
150b54d2093Smrg    Drawable drawable;
151b54d2093Smrg    Time     timestamp;
152b54d2093Smrg    Time     configTimestamp;
153b54d2093Smrg    SizeID   sizeID;
154b54d2093Smrg    Rotation rotation;
155b54d2093Smrg    CARD16   rate;
156b54d2093Smrg    CARD16   pad;
15717ca54c3Smrg} xRRSetScreenConfigReq;
15817ca54c3Smrg#define sz_xRRSetScreenConfigReq   24
15917ca54c3Smrg
16017ca54c3Smrgtypedef struct {
16117ca54c3Smrg    BYTE    type;   /* X_Reply */
16217ca54c3Smrg    CARD8   status;
163b54d2093Smrg    CARD16  sequenceNumber;
164b54d2093Smrg    CARD32  length;
165b54d2093Smrg    Time    newTimestamp;
166b54d2093Smrg    Time    newConfigTimestamp;
16717ca54c3Smrg    Window  root;
168b54d2093Smrg    CARD16  subpixelOrder;
169b54d2093Smrg    CARD16  pad4;
170b54d2093Smrg    CARD32  pad5;
171b54d2093Smrg    CARD32  pad6;
17217ca54c3Smrg} xRRSetScreenConfigReply;
17317ca54c3Smrg#define sz_xRRSetScreenConfigReply 32
17417ca54c3Smrg
17517ca54c3Smrgtypedef struct {
17617ca54c3Smrg    CARD8   reqType;
17717ca54c3Smrg    CARD8   randrReqType;
178b54d2093Smrg    CARD16  length;
179b54d2093Smrg    Window  window;
180b54d2093Smrg    CARD16  enable;
181b54d2093Smrg    CARD16  pad2;
18217ca54c3Smrg} xRRSelectInputReq;
18317ca54c3Smrg#define sz_xRRSelectInputReq   12
18417ca54c3Smrg
18517ca54c3Smrg/*
18617ca54c3Smrg * Additions for version 1.2
18717ca54c3Smrg */
18817ca54c3Smrg
18917ca54c3Smrgtypedef struct _xRRModeInfo {
190b54d2093Smrg    RRMode		id;
191b54d2093Smrg    CARD16		width;
192b54d2093Smrg    CARD16		height;
193b54d2093Smrg    CARD32		dotClock;
194b54d2093Smrg    CARD16		hSyncStart;
195b54d2093Smrg    CARD16		hSyncEnd;
196b54d2093Smrg    CARD16		hTotal;
197b54d2093Smrg    CARD16		hSkew;
198b54d2093Smrg    CARD16		vSyncStart;
199b54d2093Smrg    CARD16		vSyncEnd;
200b54d2093Smrg    CARD16		vTotal;
201b54d2093Smrg    CARD16		nameLength;
202b54d2093Smrg    RRModeFlags		modeFlags;
20317ca54c3Smrg} xRRModeInfo;
20417ca54c3Smrg#define sz_xRRModeInfo		    32
20517ca54c3Smrg
20617ca54c3Smrgtypedef struct {
20717ca54c3Smrg    CARD8   reqType;
20817ca54c3Smrg    CARD8   randrReqType;
209b54d2093Smrg    CARD16  length;
210b54d2093Smrg    Window  window;
21117ca54c3Smrg} xRRGetScreenSizeRangeReq;
21217ca54c3Smrg#define sz_xRRGetScreenSizeRangeReq 8
21317ca54c3Smrg
21417ca54c3Smrgtypedef struct {
21517ca54c3Smrg    BYTE    type;   /* X_Reply */
21617ca54c3Smrg    CARD8   pad;
217b54d2093Smrg    CARD16  sequenceNumber;
218b54d2093Smrg    CARD32  length;
219b54d2093Smrg    CARD16  minWidth;
220b54d2093Smrg    CARD16  minHeight;
221b54d2093Smrg    CARD16  maxWidth;
222b54d2093Smrg    CARD16  maxHeight;
223b54d2093Smrg    CARD32  pad0;
224b54d2093Smrg    CARD32  pad1;
225b54d2093Smrg    CARD32  pad2;
226b54d2093Smrg    CARD32  pad3;
22717ca54c3Smrg} xRRGetScreenSizeRangeReply;
22817ca54c3Smrg#define sz_xRRGetScreenSizeRangeReply 32
22917ca54c3Smrg
23017ca54c3Smrgtypedef struct {
23117ca54c3Smrg    CARD8   reqType;
23217ca54c3Smrg    CARD8   randrReqType;
233b54d2093Smrg    CARD16  length;
234b54d2093Smrg    Window  window;
235b54d2093Smrg    CARD16  width;
236b54d2093Smrg    CARD16  height;
237b54d2093Smrg    CARD32  widthInMillimeters;
238b54d2093Smrg    CARD32  heightInMillimeters;
23917ca54c3Smrg} xRRSetScreenSizeReq;
24017ca54c3Smrg#define sz_xRRSetScreenSizeReq	    20
24117ca54c3Smrg
24217ca54c3Smrgtypedef struct {
24317ca54c3Smrg    CARD8   reqType;
24417ca54c3Smrg    CARD8   randrReqType;
245b54d2093Smrg    CARD16  length;
246b54d2093Smrg    Window  window;
24717ca54c3Smrg} xRRGetScreenResourcesReq;
24817ca54c3Smrg#define sz_xRRGetScreenResourcesReq 8
24917ca54c3Smrg
25017ca54c3Smrgtypedef struct {
25117ca54c3Smrg    BYTE	type;
25217ca54c3Smrg    CARD8	pad;
253b54d2093Smrg    CARD16	sequenceNumber;
254b54d2093Smrg    CARD32	length;
255b54d2093Smrg    Time	timestamp;
256b54d2093Smrg    Time	configTimestamp;
257b54d2093Smrg    CARD16	nCrtcs;
258b54d2093Smrg    CARD16	nOutputs;
259b54d2093Smrg    CARD16	nModes;
260b54d2093Smrg    CARD16	nbytesNames;
261b54d2093Smrg    CARD32	pad1;
262b54d2093Smrg    CARD32	pad2;
26317ca54c3Smrg} xRRGetScreenResourcesReply;
26417ca54c3Smrg#define sz_xRRGetScreenResourcesReply	32
26517ca54c3Smrg
26617ca54c3Smrgtypedef struct {
26717ca54c3Smrg    CARD8	reqType;
26817ca54c3Smrg    CARD8	randrReqType;
269b54d2093Smrg    CARD16	length;
270b54d2093Smrg    RROutput	output;
271b54d2093Smrg    Time	configTimestamp;
27217ca54c3Smrg} xRRGetOutputInfoReq;
27317ca54c3Smrg#define sz_xRRGetOutputInfoReq		12
27417ca54c3Smrg
27517ca54c3Smrgtypedef struct {
27617ca54c3Smrg    BYTE	type;
27717ca54c3Smrg    CARD8	status;
278b54d2093Smrg    CARD16	sequenceNumber;
279b54d2093Smrg    CARD32	length;
280b54d2093Smrg    Time	timestamp;
281b54d2093Smrg    RRCrtc	crtc;
282b54d2093Smrg    CARD32	mmWidth;
283b54d2093Smrg    CARD32	mmHeight;
28417ca54c3Smrg    CARD8	connection;
28517ca54c3Smrg    CARD8	subpixelOrder;
286b54d2093Smrg    CARD16	nCrtcs;
287b54d2093Smrg    CARD16	nModes;
288b54d2093Smrg    CARD16	nPreferred;
289b54d2093Smrg    CARD16	nClones;
290b54d2093Smrg    CARD16	nameLength;
29117ca54c3Smrg} xRRGetOutputInfoReply;
29217ca54c3Smrg#define sz_xRRGetOutputInfoReply	36
29317ca54c3Smrg
29417ca54c3Smrgtypedef struct {
29517ca54c3Smrg    CARD8	reqType;
29617ca54c3Smrg    CARD8	randrReqType;
297b54d2093Smrg    CARD16	length;
298b54d2093Smrg    RROutput	output;
299b54d2093Smrg} xRRListOutputPropertiesReq;
30017ca54c3Smrg#define sz_xRRListOutputPropertiesReq	8
30117ca54c3Smrg
30217ca54c3Smrgtypedef struct {
30317ca54c3Smrg    BYTE	type;
30417ca54c3Smrg    CARD8	pad0;
305b54d2093Smrg    CARD16	sequenceNumber;
306b54d2093Smrg    CARD32	length;
307b54d2093Smrg    CARD16	nAtoms;
308b54d2093Smrg    CARD16	pad1;
309b54d2093Smrg    CARD32	pad2;
310b54d2093Smrg    CARD32	pad3;
311b54d2093Smrg    CARD32	pad4;
312b54d2093Smrg    CARD32	pad5;
313b54d2093Smrg    CARD32	pad6;
31417ca54c3Smrg} xRRListOutputPropertiesReply;
31517ca54c3Smrg#define sz_xRRListOutputPropertiesReply	32
31617ca54c3Smrg
31717ca54c3Smrgtypedef struct {
31817ca54c3Smrg    CARD8	reqType;
31917ca54c3Smrg    CARD8	randrReqType;
320b54d2093Smrg    CARD16	length;
321b54d2093Smrg    RROutput	output;
322b54d2093Smrg    Atom	property;
323b54d2093Smrg} xRRQueryOutputPropertyReq;
32417ca54c3Smrg#define sz_xRRQueryOutputPropertyReq	12
32517ca54c3Smrg
32617ca54c3Smrgtypedef struct {
32717ca54c3Smrg    BYTE	type;
32817ca54c3Smrg    BYTE	pad0;
329b54d2093Smrg    CARD16	sequenceNumber;
330b54d2093Smrg    CARD32	length;
33117ca54c3Smrg    BOOL	pending;
33217ca54c3Smrg    BOOL	range;
33317ca54c3Smrg    BOOL	immutable;
33417ca54c3Smrg    BYTE	pad1;
335b54d2093Smrg    CARD32	pad2;
336b54d2093Smrg    CARD32	pad3;
337b54d2093Smrg    CARD32	pad4;
338b54d2093Smrg    CARD32	pad5;
339b54d2093Smrg    CARD32	pad6;
34017ca54c3Smrg} xRRQueryOutputPropertyReply;
34117ca54c3Smrg#define sz_xRRQueryOutputPropertyReply	32
34217ca54c3Smrg
34317ca54c3Smrgtypedef struct {
34417ca54c3Smrg    CARD8	reqType;
34517ca54c3Smrg    CARD8	randrReqType;
346b54d2093Smrg    CARD16	length;
347b54d2093Smrg    RROutput	output;
348b54d2093Smrg    Atom	property;
34917ca54c3Smrg    BOOL	pending;
35017ca54c3Smrg    BOOL	range;
351b54d2093Smrg    CARD16	pad;
352b54d2093Smrg} xRRConfigureOutputPropertyReq;
35317ca54c3Smrg#define sz_xRRConfigureOutputPropertyReq	16
35417ca54c3Smrg
35517ca54c3Smrgtypedef struct {
35617ca54c3Smrg    CARD8	reqType;
35717ca54c3Smrg    CARD8	randrReqType;
358b54d2093Smrg    CARD16	length;
359b54d2093Smrg    RROutput	output;
360b54d2093Smrg    Atom	property;
361b54d2093Smrg    Atom	type;
36217ca54c3Smrg    CARD8	format;
36317ca54c3Smrg    CARD8	mode;
36417ca54c3Smrg    CARD16	pad;
365b54d2093Smrg    CARD32	nUnits;
36617ca54c3Smrg} xRRChangeOutputPropertyReq;
36717ca54c3Smrg#define sz_xRRChangeOutputPropertyReq	24
36817ca54c3Smrg
36917ca54c3Smrgtypedef struct {
37017ca54c3Smrg    CARD8	reqType;
37117ca54c3Smrg    CARD8	randrReqType;
372b54d2093Smrg    CARD16	length;
373b54d2093Smrg    RROutput	output;
374b54d2093Smrg    Atom	property;
37517ca54c3Smrg} xRRDeleteOutputPropertyReq;
37617ca54c3Smrg#define sz_xRRDeleteOutputPropertyReq	12
37717ca54c3Smrg
37817ca54c3Smrgtypedef struct {
37917ca54c3Smrg    CARD8	reqType;
38017ca54c3Smrg    CARD8	randrReqType;
381b54d2093Smrg    CARD16	length;
382b54d2093Smrg    RROutput	output;
383b54d2093Smrg    Atom	property;
384b54d2093Smrg    Atom	type;
385b54d2093Smrg    CARD32	longOffset;
386b54d2093Smrg    CARD32	longLength;
38717ca54c3Smrg#ifdef __cplusplus
38817ca54c3Smrg    BOOL	_delete;
38917ca54c3Smrg#else
39017ca54c3Smrg    BOOL	delete;
39117ca54c3Smrg#endif
39217ca54c3Smrg    BOOL	pending;
393b54d2093Smrg    CARD16	pad1;
39417ca54c3Smrg} xRRGetOutputPropertyReq;
39517ca54c3Smrg#define sz_xRRGetOutputPropertyReq	28
39617ca54c3Smrg
39717ca54c3Smrgtypedef struct {
39817ca54c3Smrg    BYTE	type;
39917ca54c3Smrg    CARD8	format;
400b54d2093Smrg    CARD16	sequenceNumber;
401b54d2093Smrg    CARD32	length;
402b54d2093Smrg    Atom	propertyType;
403b54d2093Smrg    CARD32	bytesAfter;
404b54d2093Smrg    CARD32	nItems;
405b54d2093Smrg    CARD32	pad1;
406b54d2093Smrg    CARD32	pad2;
407b54d2093Smrg    CARD32	pad3;
40817ca54c3Smrg} xRRGetOutputPropertyReply;
40917ca54c3Smrg#define sz_xRRGetOutputPropertyReply	32
41017ca54c3Smrg
41117ca54c3Smrgtypedef struct {
41217ca54c3Smrg    CARD8	reqType;
41317ca54c3Smrg    CARD8	randrReqType;
414b54d2093Smrg    CARD16	length;
415b54d2093Smrg    Window	window;
41617ca54c3Smrg    xRRModeInfo	modeInfo;
417b54d2093Smrg} xRRCreateModeReq;
41817ca54c3Smrg#define sz_xRRCreateModeReq		40
41917ca54c3Smrg
42017ca54c3Smrgtypedef struct {
42117ca54c3Smrg    BYTE	type;
42217ca54c3Smrg    CARD8	pad0;
423b54d2093Smrg    CARD16	sequenceNumber;
424b54d2093Smrg    CARD32	length;
425b54d2093Smrg    RRMode	mode;
426b54d2093Smrg    CARD32	pad1;
427b54d2093Smrg    CARD32	pad2;
428b54d2093Smrg    CARD32	pad3;
429b54d2093Smrg    CARD32	pad4;
430b54d2093Smrg    CARD32	pad5;
43117ca54c3Smrg} xRRCreateModeReply;
43217ca54c3Smrg#define sz_xRRCreateModeReply		32
43317ca54c3Smrg
43417ca54c3Smrgtypedef struct {
43517ca54c3Smrg    CARD8	reqType;
43617ca54c3Smrg    CARD8	randrReqType;
437b54d2093Smrg    CARD16	length;
438b54d2093Smrg    RRMode	mode;
43917ca54c3Smrg} xRRDestroyModeReq;
44017ca54c3Smrg#define sz_xRRDestroyModeReq		8
44117ca54c3Smrg
44217ca54c3Smrgtypedef struct {
44317ca54c3Smrg    CARD8	reqType;
44417ca54c3Smrg    CARD8	randrReqType;
445b54d2093Smrg    CARD16	length;
446b54d2093Smrg    RROutput	output;
447b54d2093Smrg    RRMode	mode;
44817ca54c3Smrg} xRRAddOutputModeReq;
44917ca54c3Smrg#define sz_xRRAddOutputModeReq		12
45017ca54c3Smrg
45117ca54c3Smrgtypedef struct {
45217ca54c3Smrg    CARD8	reqType;
45317ca54c3Smrg    CARD8	randrReqType;
454b54d2093Smrg    CARD16	length;
455b54d2093Smrg    RROutput	output;
456b54d2093Smrg    RRMode	mode;
45717ca54c3Smrg} xRRDeleteOutputModeReq;
45817ca54c3Smrg#define sz_xRRDeleteOutputModeReq	12
45917ca54c3Smrg
46017ca54c3Smrgtypedef struct {
46117ca54c3Smrg    CARD8	reqType;
46217ca54c3Smrg    CARD8	randrReqType;
463b54d2093Smrg    CARD16	length;
464b54d2093Smrg    RRCrtc	crtc;
465b54d2093Smrg    Time	configTimestamp;
466b54d2093Smrg} xRRGetCrtcInfoReq;
46717ca54c3Smrg#define sz_xRRGetCrtcInfoReq		12
46817ca54c3Smrg
46917ca54c3Smrgtypedef struct {
47017ca54c3Smrg    BYTE	type;
47117ca54c3Smrg    CARD8	status;
472b54d2093Smrg    CARD16	sequenceNumber;
473b54d2093Smrg    CARD32	length;
474b54d2093Smrg    Time	timestamp;
475b54d2093Smrg    INT16	x;
476b54d2093Smrg    INT16	y;
477b54d2093Smrg    CARD16	width;
478b54d2093Smrg    CARD16	height;
479b54d2093Smrg    RRMode	mode;
480b54d2093Smrg    Rotation	rotation;
481b54d2093Smrg    Rotation	rotations;
482b54d2093Smrg    CARD16	nOutput;
483b54d2093Smrg    CARD16	nPossibleOutput;
48417ca54c3Smrg} xRRGetCrtcInfoReply;
48517ca54c3Smrg#define sz_xRRGetCrtcInfoReply		32
48617ca54c3Smrg
48717ca54c3Smrgtypedef struct {
48817ca54c3Smrg    CARD8	reqType;
48917ca54c3Smrg    CARD8	randrReqType;
490b54d2093Smrg    CARD16	length;
491b54d2093Smrg    RRCrtc	crtc;
492b54d2093Smrg    Time	timestamp;
493b54d2093Smrg    Time    	configTimestamp;
494b54d2093Smrg    INT16	x;
495b54d2093Smrg    INT16	y;
496b54d2093Smrg    RRMode	mode;
497b54d2093Smrg    Rotation	rotation;
498b54d2093Smrg    CARD16	pad;
499b54d2093Smrg} xRRSetCrtcConfigReq;
50017ca54c3Smrg#define sz_xRRSetCrtcConfigReq		28
50117ca54c3Smrg
50217ca54c3Smrgtypedef struct {
50317ca54c3Smrg    BYTE	type;
50417ca54c3Smrg    CARD8	status;
505b54d2093Smrg    CARD16	sequenceNumber;
506b54d2093Smrg    CARD32	length;
507b54d2093Smrg    Time	newTimestamp;
508b54d2093Smrg    CARD32	pad1;
509b54d2093Smrg    CARD32	pad2;
510b54d2093Smrg    CARD32	pad3;
511b54d2093Smrg    CARD32	pad4;
512b54d2093Smrg    CARD32	pad5;
51317ca54c3Smrg} xRRSetCrtcConfigReply;
51417ca54c3Smrg#define sz_xRRSetCrtcConfigReply	32
51517ca54c3Smrg
51617ca54c3Smrgtypedef struct {
51717ca54c3Smrg    CARD8	reqType;
51817ca54c3Smrg    CARD8	randrReqType;
519b54d2093Smrg    CARD16	length;
520b54d2093Smrg    RRCrtc	crtc;
521b54d2093Smrg} xRRGetCrtcGammaSizeReq;
52217ca54c3Smrg#define sz_xRRGetCrtcGammaSizeReq	8
52317ca54c3Smrg
52417ca54c3Smrgtypedef struct {
52517ca54c3Smrg    BYTE	type;
52617ca54c3Smrg    CARD8	status;
527b54d2093Smrg    CARD16	sequenceNumber;
528b54d2093Smrg    CARD32	length;
529b54d2093Smrg    CARD16	size;
530b54d2093Smrg    CARD16	pad1;
531b54d2093Smrg    CARD32	pad2;
532b54d2093Smrg    CARD32	pad3;
533b54d2093Smrg    CARD32	pad4;
534b54d2093Smrg    CARD32	pad5;
535b54d2093Smrg    CARD32	pad6;
53617ca54c3Smrg} xRRGetCrtcGammaSizeReply;
53717ca54c3Smrg#define sz_xRRGetCrtcGammaSizeReply	32
53817ca54c3Smrg
53917ca54c3Smrgtypedef struct {
54017ca54c3Smrg    CARD8	reqType;
54117ca54c3Smrg    CARD8	randrReqType;
542b54d2093Smrg    CARD16	length;
543b54d2093Smrg    RRCrtc	crtc;
544b54d2093Smrg} xRRGetCrtcGammaReq;
54517ca54c3Smrg#define sz_xRRGetCrtcGammaReq		8
54617ca54c3Smrg
54717ca54c3Smrgtypedef struct {
54817ca54c3Smrg    BYTE	type;
54917ca54c3Smrg    CARD8	status;
550b54d2093Smrg    CARD16	sequenceNumber;
551b54d2093Smrg    CARD32	length;
552b54d2093Smrg    CARD16	size;
553b54d2093Smrg    CARD16	pad1;
554b54d2093Smrg    CARD32	pad2;
555b54d2093Smrg    CARD32	pad3;
556b54d2093Smrg    CARD32	pad4;
557b54d2093Smrg    CARD32	pad5;
558b54d2093Smrg    CARD32	pad6;
55917ca54c3Smrg} xRRGetCrtcGammaReply;
56017ca54c3Smrg#define sz_xRRGetCrtcGammaReply		32
56117ca54c3Smrg
56217ca54c3Smrgtypedef struct {
56317ca54c3Smrg    CARD8	reqType;
56417ca54c3Smrg    CARD8	randrReqType;
565b54d2093Smrg    CARD16	length;
566b54d2093Smrg    RRCrtc	crtc;
567b54d2093Smrg    CARD16	size;
568b54d2093Smrg    CARD16	pad1;
56917ca54c3Smrg} xRRSetCrtcGammaReq;
57017ca54c3Smrg#define sz_xRRSetCrtcGammaReq		12
57117ca54c3Smrg
57217ca54c3Smrg/*
57317ca54c3Smrg * Additions for V1.3
57417ca54c3Smrg */
57517ca54c3Smrg
57617ca54c3Smrgtypedef xRRGetScreenResourcesReq xRRGetScreenResourcesCurrentReq;
57717ca54c3Smrg
57817ca54c3Smrg#define sz_xRRGetScreenResourcesCurrentReq sz_xRRGetScreenResourcesReq
57917ca54c3Smrg
58017ca54c3Smrgtypedef xRRGetScreenResourcesReply xRRGetScreenResourcesCurrentReply;
58117ca54c3Smrg#define sz_xRRGetScreenResourcesCurrentReply	sz_xRRGetScreenResourcesReply
58217ca54c3Smrg
58317ca54c3Smrgtypedef struct {
58417ca54c3Smrg    CARD8		reqType;
58517ca54c3Smrg    CARD8		randrReqType;
586b54d2093Smrg    CARD16		length;
587b54d2093Smrg    RRCrtc		crtc;
58817ca54c3Smrg    xRenderTransform	transform;
58917ca54c3Smrg    CARD16		nbytesFilter;	/* number of bytes in filter name */
590b54d2093Smrg    CARD16		pad;
59117ca54c3Smrg} xRRSetCrtcTransformReq;
59217ca54c3Smrg
59317ca54c3Smrg#define sz_xRRSetCrtcTransformReq	48
59417ca54c3Smrg
59517ca54c3Smrgtypedef struct {
59617ca54c3Smrg    CARD8		reqType;
59717ca54c3Smrg    CARD8		randrReqType;
598b54d2093Smrg    CARD16		length;
599b54d2093Smrg    RRCrtc		crtc;
60017ca54c3Smrg} xRRGetCrtcTransformReq;
60117ca54c3Smrg
60217ca54c3Smrg#define sz_xRRGetCrtcTransformReq	8
60317ca54c3Smrg
60417ca54c3Smrgtypedef struct {
60517ca54c3Smrg    BYTE		type;
60617ca54c3Smrg    CARD8		status;
607b54d2093Smrg    CARD16		sequenceNumber;
608b54d2093Smrg    CARD32		length;
60917ca54c3Smrg    xRenderTransform	pendingTransform;
61017ca54c3Smrg    BYTE		hasTransforms;
61117ca54c3Smrg    CARD8		pad0;
612b54d2093Smrg    CARD16		pad1;
61317ca54c3Smrg    xRenderTransform	currentTransform;
614b54d2093Smrg    CARD32		pad2;
615b54d2093Smrg    CARD16		pendingNbytesFilter;    /* number of bytes in filter name */
616b54d2093Smrg    CARD16		pendingNparamsFilter;   /* number of filter params */
617b54d2093Smrg    CARD16		currentNbytesFilter;    /* number of bytes in filter name */
618b54d2093Smrg    CARD16		currentNparamsFilter;   /* number of filter params */
61917ca54c3Smrg} xRRGetCrtcTransformReply;
62017ca54c3Smrg
62117ca54c3Smrg#define sz_xRRGetCrtcTransformReply	96
62217ca54c3Smrg
62317ca54c3Smrgtypedef struct {
62417ca54c3Smrg    CARD8	reqType;
62517ca54c3Smrg    CARD8	randrReqType;
626b54d2093Smrg    CARD16	length;
627b54d2093Smrg    Window	window;
628b54d2093Smrg    RROutput	output;
62917ca54c3Smrg} xRRSetOutputPrimaryReq;
63017ca54c3Smrg#define sz_xRRSetOutputPrimaryReq	12
63117ca54c3Smrg
63217ca54c3Smrgtypedef struct {
63317ca54c3Smrg    CARD8	reqType;
63417ca54c3Smrg    CARD8	randrReqType;
635b54d2093Smrg    CARD16	length;
636b54d2093Smrg    Window	window;
63717ca54c3Smrg} xRRGetOutputPrimaryReq;
63817ca54c3Smrg#define sz_xRRGetOutputPrimaryReq	8
63917ca54c3Smrg
64017ca54c3Smrgtypedef struct {
64117ca54c3Smrg    BYTE	type;
64217ca54c3Smrg    CARD8	pad;
643b54d2093Smrg    CARD16	sequenceNumber;
644b54d2093Smrg    CARD32	length;
645b54d2093Smrg    RROutput	output;
646b54d2093Smrg    CARD32	pad1;
647b54d2093Smrg    CARD32	pad2;
648b54d2093Smrg    CARD32	pad3;
649b54d2093Smrg    CARD32	pad4;
650b54d2093Smrg    CARD32	pad5;
65117ca54c3Smrg} xRRGetOutputPrimaryReply;
65217ca54c3Smrg#define sz_xRRGetOutputPrimaryReply	32
65317ca54c3Smrg
65417ca54c3Smrg/*
65517ca54c3Smrg * Additions for V1.4
65617ca54c3Smrg */
65717ca54c3Smrg
65817ca54c3Smrgtypedef struct {
65917ca54c3Smrg    CARD8	reqType;
66017ca54c3Smrg    CARD8	randrReqType;
661b54d2093Smrg    CARD16	length;
662b54d2093Smrg    Window	window;
66317ca54c3Smrg} xRRGetProvidersReq;
66417ca54c3Smrg#define sz_xRRGetProvidersReq 8
66517ca54c3Smrg
66617ca54c3Smrgtypedef struct {
66717ca54c3Smrg    BYTE	type;
66817ca54c3Smrg    CARD8	pad;
669b54d2093Smrg    CARD16	sequenceNumber;
670b54d2093Smrg    CARD32	length;
671b54d2093Smrg    Time	timestamp;
67217ca54c3Smrg    CARD16	nProviders;
673b54d2093Smrg    CARD16	pad1;
674b54d2093Smrg    CARD32	pad2;
675b54d2093Smrg    CARD32	pad3;
676b54d2093Smrg    CARD32	pad4;
677b54d2093Smrg    CARD32	pad5;
67817ca54c3Smrg} xRRGetProvidersReply;
67917ca54c3Smrg#define sz_xRRGetProvidersReply 32
68017ca54c3Smrg
68117ca54c3Smrgtypedef struct {
68217ca54c3Smrg    CARD8	reqType;
68317ca54c3Smrg    CARD8	randrReqType;
684b54d2093Smrg    CARD16	length;
685b54d2093Smrg    RRProvider	provider;
686b54d2093Smrg    Time	configTimestamp;
68717ca54c3Smrg} xRRGetProviderInfoReq;
68817ca54c3Smrg#define sz_xRRGetProviderInfoReq 12
68917ca54c3Smrg
69017ca54c3Smrgtypedef struct {
69117ca54c3Smrg    BYTE	type;
69217ca54c3Smrg    CARD8	status;
693b54d2093Smrg    CARD16	sequenceNumber;
694b54d2093Smrg    CARD32	length;
695b54d2093Smrg    Time	timestamp;
696b54d2093Smrg    CARD32	capabilities;
697b54d2093Smrg    CARD16	nCrtcs;
698b54d2093Smrg    CARD16	nOutputs;
699b54d2093Smrg    CARD16	nAssociatedProviders;
700b54d2093Smrg    CARD16	nameLength;
701b54d2093Smrg    CARD32	pad1;
702b54d2093Smrg    CARD32	pad2;
70317ca54c3Smrg} xRRGetProviderInfoReply;
70417ca54c3Smrg#define sz_xRRGetProviderInfoReply 32
70517ca54c3Smrg
70617ca54c3Smrgtypedef struct {
70717ca54c3Smrg    CARD8	reqType;
70817ca54c3Smrg    CARD8	randrReqType;
709b54d2093Smrg    CARD16	length;
710b54d2093Smrg    RRProvider  provider;
711b54d2093Smrg    RRProvider  source_provider;
712b54d2093Smrg    Time	configTimestamp;
71317ca54c3Smrg} xRRSetProviderOutputSourceReq;
71417ca54c3Smrg#define sz_xRRSetProviderOutputSourceReq 16
71517ca54c3Smrg
71617ca54c3Smrgtypedef struct {
71717ca54c3Smrg    CARD8	reqType;
71817ca54c3Smrg    CARD8	randrReqType;
719b54d2093Smrg    CARD16	length;
720b54d2093Smrg    RRProvider  provider;
721b54d2093Smrg    RRProvider  sink_provider;
722b54d2093Smrg    Time	configTimestamp;
72317ca54c3Smrg} xRRSetProviderOffloadSinkReq;
72417ca54c3Smrg#define sz_xRRSetProviderOffloadSinkReq 16
72517ca54c3Smrg
72617ca54c3Smrgtypedef struct {
72717ca54c3Smrg    CARD8	reqType;
72817ca54c3Smrg    CARD8	randrReqType;
729b54d2093Smrg    CARD16	length;
730b54d2093Smrg    RRProvider	provider;
731b54d2093Smrg} xRRListProviderPropertiesReq;
73217ca54c3Smrg#define sz_xRRListProviderPropertiesReq	8
73317ca54c3Smrg
73417ca54c3Smrgtypedef struct {
73517ca54c3Smrg    BYTE	type;
73617ca54c3Smrg    CARD8	pad0;
737b54d2093Smrg    CARD16	sequenceNumber;
738b54d2093Smrg    CARD32	length;
739b54d2093Smrg    CARD16	nAtoms;
740b54d2093Smrg    CARD16	pad1;
741b54d2093Smrg    CARD32	pad2;
742b54d2093Smrg    CARD32	pad3;
743b54d2093Smrg    CARD32	pad4;
744b54d2093Smrg    CARD32	pad5;
745b54d2093Smrg    CARD32	pad6;
74617ca54c3Smrg} xRRListProviderPropertiesReply;
74717ca54c3Smrg#define sz_xRRListProviderPropertiesReply	32
74817ca54c3Smrg
74917ca54c3Smrgtypedef struct {
75017ca54c3Smrg    CARD8	reqType;
75117ca54c3Smrg    CARD8	randrReqType;
752b54d2093Smrg    CARD16	length;
753b54d2093Smrg    RRProvider	provider;
754b54d2093Smrg    Atom	property;
755b54d2093Smrg} xRRQueryProviderPropertyReq;
75617ca54c3Smrg#define sz_xRRQueryProviderPropertyReq	12
75717ca54c3Smrg
75817ca54c3Smrgtypedef struct {
75917ca54c3Smrg    BYTE	type;
76017ca54c3Smrg    BYTE	pad0;
761b54d2093Smrg    CARD16	sequenceNumber;
762b54d2093Smrg    CARD32	length;
76317ca54c3Smrg    BOOL	pending;
76417ca54c3Smrg    BOOL	range;
76517ca54c3Smrg    BOOL	immutable;
76617ca54c3Smrg    BYTE	pad1;
767b54d2093Smrg    CARD32	pad2;
768b54d2093Smrg    CARD32	pad3;
769b54d2093Smrg    CARD32	pad4;
770b54d2093Smrg    CARD32	pad5;
771b54d2093Smrg    CARD32	pad6;
77217ca54c3Smrg} xRRQueryProviderPropertyReply;
77317ca54c3Smrg#define sz_xRRQueryProviderPropertyReply	32
77417ca54c3Smrg
77517ca54c3Smrgtypedef struct {
77617ca54c3Smrg    CARD8	reqType;
77717ca54c3Smrg    CARD8	randrReqType;
778b54d2093Smrg    CARD16	length;
779b54d2093Smrg    RRProvider	provider;
780b54d2093Smrg    Atom	property;
78117ca54c3Smrg    BOOL	pending;
78217ca54c3Smrg    BOOL	range;
783b54d2093Smrg    CARD16	pad;
784b54d2093Smrg} xRRConfigureProviderPropertyReq;
78517ca54c3Smrg#define sz_xRRConfigureProviderPropertyReq	16
78617ca54c3Smrg
78717ca54c3Smrgtypedef struct {
78817ca54c3Smrg    CARD8	reqType;
78917ca54c3Smrg    CARD8	randrReqType;
790b54d2093Smrg    CARD16	length;
791b54d2093Smrg    RRProvider	provider;
792b54d2093Smrg    Atom	property;
793b54d2093Smrg    Atom	type;
79417ca54c3Smrg    CARD8	format;
79517ca54c3Smrg    CARD8	mode;
79617ca54c3Smrg    CARD16	pad;
797b54d2093Smrg    CARD32	nUnits;
79817ca54c3Smrg} xRRChangeProviderPropertyReq;
79917ca54c3Smrg#define sz_xRRChangeProviderPropertyReq	24
80017ca54c3Smrg
80117ca54c3Smrgtypedef struct {
80217ca54c3Smrg    CARD8	reqType;
80317ca54c3Smrg    CARD8	randrReqType;
804b54d2093Smrg    CARD16	length;
805b54d2093Smrg    RRProvider	provider;
806b54d2093Smrg    Atom	property;
80717ca54c3Smrg} xRRDeleteProviderPropertyReq;
80817ca54c3Smrg#define sz_xRRDeleteProviderPropertyReq	12
80917ca54c3Smrg
81017ca54c3Smrgtypedef struct {
81117ca54c3Smrg    CARD8	reqType;
81217ca54c3Smrg    CARD8	randrReqType;
813b54d2093Smrg    CARD16	length;
814b54d2093Smrg    RRProvider	provider;
815b54d2093Smrg    Atom	property;
816b54d2093Smrg    Atom	type;
817b54d2093Smrg    CARD32	longOffset;
818b54d2093Smrg    CARD32	longLength;
81917ca54c3Smrg#ifdef __cplusplus
82017ca54c3Smrg    BOOL	_delete;
82117ca54c3Smrg#else
82217ca54c3Smrg    BOOL	delete;
82317ca54c3Smrg#endif
82417ca54c3Smrg    BOOL	pending;
825b54d2093Smrg    CARD16	pad1;
82617ca54c3Smrg} xRRGetProviderPropertyReq;
82717ca54c3Smrg#define sz_xRRGetProviderPropertyReq	28
82817ca54c3Smrg
82917ca54c3Smrgtypedef struct {
83017ca54c3Smrg    BYTE	type;
83117ca54c3Smrg    CARD8	format;
832b54d2093Smrg    CARD16	sequenceNumber;
833b54d2093Smrg    CARD32	length;
834b54d2093Smrg    Atom	propertyType;
835b54d2093Smrg    CARD32	bytesAfter;
836b54d2093Smrg    CARD32	nItems;
837b54d2093Smrg    CARD32	pad1;
838b54d2093Smrg    CARD32	pad2;
839b54d2093Smrg    CARD32	pad3;
84017ca54c3Smrg} xRRGetProviderPropertyReply;
84117ca54c3Smrg#define sz_xRRGetProviderPropertyReply	32
84217ca54c3Smrg
84317ca54c3Smrg/*
84417ca54c3Smrg * Additions for V1.6
84517ca54c3Smrg */
84617ca54c3Smrg
84717ca54c3Smrgtypedef struct {
84817ca54c3Smrg    CARD8	reqType;
84917ca54c3Smrg    CARD8	randrReqType;
850b54d2093Smrg    CARD16	length;
851b54d2093Smrg    Window	window;
852b54d2093Smrg    RRLease	lid;
853b54d2093Smrg    CARD16	nCrtcs;
854b54d2093Smrg    CARD16	nOutputs;
85517ca54c3Smrg} xRRCreateLeaseReq;
85617ca54c3Smrg#define sz_xRRCreateLeaseReq	16
85717ca54c3Smrg
85817ca54c3Smrgtypedef struct {
85917ca54c3Smrg    BYTE	type;
86017ca54c3Smrg    CARD8	nfd;
861b54d2093Smrg    CARD16	sequenceNumber;
862b54d2093Smrg    CARD32	length;
863b54d2093Smrg    CARD32	pad2;
864b54d2093Smrg    CARD32	pad3;
865b54d2093Smrg    CARD32	pad4;
866b54d2093Smrg    CARD32	pad5;
867b54d2093Smrg    CARD32	pad6;
868b54d2093Smrg    CARD32	pad7;
86917ca54c3Smrg} xRRCreateLeaseReply;
87017ca54c3Smrg#define sz_xRRCreateLeaseReply		32
87117ca54c3Smrg
87217ca54c3Smrgtypedef struct {
87317ca54c3Smrg    CARD8	reqType;
87417ca54c3Smrg    CARD8	randrReqType;
875b54d2093Smrg    CARD16	length;
876b54d2093Smrg    RRLease	lid;
87717ca54c3Smrg    BYTE	terminate;
87817ca54c3Smrg    CARD8	pad1;
879b54d2093Smrg    CARD16	pad2;
88017ca54c3Smrg} xRRFreeLeaseReq;
88117ca54c3Smrg#define sz_xRRFreeLeaseReq		12
88217ca54c3Smrg
88317ca54c3Smrg/*
88417ca54c3Smrg * event
88517ca54c3Smrg */
88617ca54c3Smrgtypedef struct {
88717ca54c3Smrg    CARD8 type;				/* always evBase + ScreenChangeNotify */
88817ca54c3Smrg    CARD8 rotation;			/* new rotation */
889b54d2093Smrg    CARD16 sequenceNumber;
890b54d2093Smrg    Time timestamp;			/* time screen was changed */
891b54d2093Smrg    Time configTimestamp;		/* time config data was changed */
892b54d2093Smrg    Window root;			/* root window */
893b54d2093Smrg    Window window;			/* window requesting notification */
894b54d2093Smrg    SizeID sizeID;			/* new size ID */
895b54d2093Smrg    CARD16 subpixelOrder;		/* subpixel order */
896b54d2093Smrg    CARD16 widthInPixels;		/* new size */
897b54d2093Smrg    CARD16 heightInPixels;
898b54d2093Smrg    CARD16 widthInMillimeters;
899b54d2093Smrg    CARD16 heightInMillimeters;
90017ca54c3Smrg} xRRScreenChangeNotifyEvent;
90117ca54c3Smrg#define sz_xRRScreenChangeNotifyEvent	32
90217ca54c3Smrg
90317ca54c3Smrgtypedef struct {
90417ca54c3Smrg    CARD8 type;				/* always evBase + RRNotify */
90517ca54c3Smrg    CARD8 subCode;			/* RRNotify_CrtcChange */
906b54d2093Smrg    CARD16 sequenceNumber;
907b54d2093Smrg    Time timestamp;			/* time crtc was changed */
908b54d2093Smrg    Window window;			/* window requesting notification */
909b54d2093Smrg    RRCrtc crtc;			/* affected CRTC */
910b54d2093Smrg    RRMode mode;			/* current mode */
911b54d2093Smrg    CARD16 rotation;			/* rotation and reflection */
912b54d2093Smrg    CARD16 pad1;			/* unused */
913b54d2093Smrg    INT16 x;				/* new location */
914b54d2093Smrg    INT16 y;
915b54d2093Smrg    CARD16 width;			/* new size */
916b54d2093Smrg    CARD16 height;
91717ca54c3Smrg} xRRCrtcChangeNotifyEvent;
91817ca54c3Smrg#define sz_xRRCrtcChangeNotifyEvent	32
91917ca54c3Smrg
92017ca54c3Smrgtypedef struct {
92117ca54c3Smrg    CARD8 type;				/* always evBase + RRNotify */
92217ca54c3Smrg    CARD8 subCode;			/* RRNotify_OutputChange */
923b54d2093Smrg    CARD16 sequenceNumber;
924b54d2093Smrg    Time timestamp;			/* time output was changed */
925b54d2093Smrg    Time configTimestamp;		/* time config was changed */
926b54d2093Smrg    Window window;			/* window requesting notification */
927b54d2093Smrg    RROutput output;			/* affected output */
928b54d2093Smrg    RRCrtc crtc;			/* current crtc */
929b54d2093Smrg    RRMode mode;			/* current mode */
930b54d2093Smrg    CARD16 rotation;			/* rotation and reflection */
93117ca54c3Smrg    CARD8 connection;			/* connection status */
93217ca54c3Smrg    CARD8 subpixelOrder;		/* subpixel order */
93317ca54c3Smrg} xRROutputChangeNotifyEvent;
93417ca54c3Smrg#define sz_xRROutputChangeNotifyEvent	32
93517ca54c3Smrg
93617ca54c3Smrgtypedef struct {
93717ca54c3Smrg    CARD8 type;				/* always evBase + RRNotify */
93817ca54c3Smrg    CARD8 subCode;			/* RRNotify_OutputProperty */
939b54d2093Smrg    CARD16 sequenceNumber;
940b54d2093Smrg    Window window;			/* window requesting notification */
941b54d2093Smrg    RROutput output;			/* affected output */
942b54d2093Smrg    Atom atom;				/* property name */
943b54d2093Smrg    Time timestamp;			/* time crtc was changed */
94417ca54c3Smrg    CARD8 state;			/* NewValue or Deleted */
94517ca54c3Smrg    CARD8 pad1;
946b54d2093Smrg    CARD16 pad2;
947b54d2093Smrg    CARD32 pad3;
948b54d2093Smrg    CARD32 pad4;
94917ca54c3Smrg} xRROutputPropertyNotifyEvent;
95017ca54c3Smrg#define sz_xRROutputPropertyNotifyEvent	32
95117ca54c3Smrg
95217ca54c3Smrgtypedef struct {
95317ca54c3Smrg    CARD8 type;				/* always evBase + RRNotify */
95417ca54c3Smrg    CARD8 subCode;			/* RRNotify_ProviderChange */
955b54d2093Smrg    CARD16 sequenceNumber;
956b54d2093Smrg    Time timestamp;			/* time provider was changed */
957b54d2093Smrg    Window window;			/* window requesting notification */
958b54d2093Smrg    RRProvider provider;		/* affected provider */
959b54d2093Smrg    CARD32 pad1;
960b54d2093Smrg    CARD32 pad2;
961b54d2093Smrg    CARD32 pad3;
962b54d2093Smrg    CARD32 pad4;
96317ca54c3Smrg} xRRProviderChangeNotifyEvent;
96417ca54c3Smrg#define sz_xRRProviderChangeNotifyEvent	32
96517ca54c3Smrg
96617ca54c3Smrgtypedef struct {
96717ca54c3Smrg    CARD8 type;				/* always evBase + RRNotify */
96817ca54c3Smrg    CARD8 subCode;			/* RRNotify_ProviderProperty */
969b54d2093Smrg    CARD16 sequenceNumber;
970b54d2093Smrg    Window window;			/* window requesting notification */
971b54d2093Smrg    RRProvider provider;		/* affected provider */
972b54d2093Smrg    Atom atom;				/* property name */
973b54d2093Smrg    Time timestamp;			/* time provider was changed */
97417ca54c3Smrg    CARD8 state;			/* NewValue or Deleted */
97517ca54c3Smrg    CARD8 pad1;
976b54d2093Smrg    CARD16 pad2;
977b54d2093Smrg    CARD32 pad3;
978b54d2093Smrg    CARD32 pad4;
97917ca54c3Smrg} xRRProviderPropertyNotifyEvent;
98017ca54c3Smrg#define sz_xRRProviderPropertyNotifyEvent	32
98117ca54c3Smrg
98217ca54c3Smrgtypedef struct {
98317ca54c3Smrg    CARD8 type;				/* always evBase + RRNotify */
98417ca54c3Smrg    CARD8 subCode;			/* RRNotify_ResourceChange */
985b54d2093Smrg    CARD16 sequenceNumber;
986b54d2093Smrg    Time timestamp;			/* time resource was changed */
987b54d2093Smrg    Window window;			/* window requesting notification */
988b54d2093Smrg    CARD32 pad1;
989b54d2093Smrg    CARD32 pad2;
990b54d2093Smrg    CARD32 pad3;
991b54d2093Smrg    CARD32 pad4;
992b54d2093Smrg    CARD32 pad5;
99317ca54c3Smrg} xRRResourceChangeNotifyEvent;
99417ca54c3Smrg#define sz_xRRResourceChangeNotifyEvent	32
99517ca54c3Smrg
99617ca54c3Smrgtypedef struct {
99717ca54c3Smrg    CARD8 type;				/* always evBase + RRNotify */
99817ca54c3Smrg    CARD8 subCode;			/* RRNotify_Lease */
999b54d2093Smrg    CARD16 sequenceNumber;
1000b54d2093Smrg    Time timestamp;			/* time resource was changed */
1001b54d2093Smrg    Window window;			/* window requesting notification */
1002b54d2093Smrg    RRLease lease;
100317ca54c3Smrg    CARD8 created;			/* created/deleted */
100417ca54c3Smrg    CARD8 pad0;
1005b54d2093Smrg    CARD16 pad1;
1006b54d2093Smrg    CARD32 pad2;
1007b54d2093Smrg    CARD32 pad3;
1008b54d2093Smrg    CARD32 pad4;
100917ca54c3Smrg} xRRLeaseNotifyEvent;
101017ca54c3Smrg#define sz_xRRLeaseNotifyEvent		32
101117ca54c3Smrg
101217ca54c3Smrgtypedef struct {
101317ca54c3Smrg    CARD8	reqType;
101417ca54c3Smrg    CARD8	randrReqType;
1015b54d2093Smrg    CARD16	length;
1016b54d2093Smrg    RRCrtc	crtc;
1017b54d2093Smrg} xRRGetPanningReq;
101817ca54c3Smrg#define sz_xRRGetPanningReq		8
101917ca54c3Smrg
102017ca54c3Smrgtypedef struct {
102117ca54c3Smrg    BYTE	type;
102217ca54c3Smrg    CARD8	status;
1023b54d2093Smrg    CARD16	sequenceNumber;
1024b54d2093Smrg    CARD32	length;
1025b54d2093Smrg    Time	timestamp;
1026b54d2093Smrg    CARD16	left;
1027b54d2093Smrg    CARD16	top;
1028b54d2093Smrg    CARD16	width;
1029b54d2093Smrg    CARD16	height;
1030b54d2093Smrg    CARD16	track_left;
1031b54d2093Smrg    CARD16	track_top;
1032b54d2093Smrg    CARD16	track_width;
1033b54d2093Smrg    CARD16	track_height;
1034b54d2093Smrg    INT16	border_left;
1035b54d2093Smrg    INT16	border_top;
1036b54d2093Smrg    INT16	border_right;
1037b54d2093Smrg    INT16	border_bottom;
103817ca54c3Smrg} xRRGetPanningReply;
103917ca54c3Smrg#define sz_xRRGetPanningReply		36
104017ca54c3Smrg
104117ca54c3Smrgtypedef struct {
104217ca54c3Smrg    CARD8	reqType;
104317ca54c3Smrg    CARD8	randrReqType;
1044b54d2093Smrg    CARD16	length;
1045b54d2093Smrg    RRCrtc	crtc;
1046b54d2093Smrg    Time	timestamp;
1047b54d2093Smrg    CARD16	left;
1048b54d2093Smrg    CARD16	top;
1049b54d2093Smrg    CARD16	width;
1050b54d2093Smrg    CARD16	height;
1051b54d2093Smrg    CARD16	track_left;
1052b54d2093Smrg    CARD16	track_top;
1053b54d2093Smrg    CARD16	track_width;
1054b54d2093Smrg    CARD16	track_height;
1055b54d2093Smrg    INT16	border_left;
1056b54d2093Smrg    INT16	border_top;
1057b54d2093Smrg    INT16	border_right;
1058b54d2093Smrg    INT16	border_bottom;
1059b54d2093Smrg} xRRSetPanningReq;
106017ca54c3Smrg#define sz_xRRSetPanningReq		36
106117ca54c3Smrg
106217ca54c3Smrgtypedef struct {
106317ca54c3Smrg    BYTE	type;
106417ca54c3Smrg    CARD8	status;
1065b54d2093Smrg    CARD16	sequenceNumber;
1066b54d2093Smrg    CARD32	length;
1067b54d2093Smrg    Time	newTimestamp;
1068b54d2093Smrg    CARD32	pad1;
1069b54d2093Smrg    CARD32	pad2;
1070b54d2093Smrg    CARD32	pad3;
1071b54d2093Smrg    CARD32	pad4;
1072b54d2093Smrg    CARD32	pad5;
107317ca54c3Smrg} xRRSetPanningReply;
107417ca54c3Smrg#define sz_xRRSetPanningReply	32
107517ca54c3Smrg
107617ca54c3Smrgtypedef struct {
1077b54d2093Smrg    Atom	name;
107817ca54c3Smrg    BOOL	primary;
107917ca54c3Smrg    BOOL	automatic;
1080b54d2093Smrg    CARD16	noutput;
1081b54d2093Smrg    INT16	x;
1082b54d2093Smrg    INT16	y;
1083b54d2093Smrg    CARD16	width;
1084b54d2093Smrg    CARD16	height;
1085b54d2093Smrg    CARD32	widthInMillimeters;
1086b54d2093Smrg    CARD32	heightInMillimeters;
108717ca54c3Smrg} xRRMonitorInfo;
108817ca54c3Smrg#define sz_xRRMonitorInfo	24
108917ca54c3Smrg
109017ca54c3Smrgtypedef struct {
109117ca54c3Smrg    CARD8	reqType;
109217ca54c3Smrg    CARD8	randrReqType;
1093b54d2093Smrg    CARD16	length;
1094b54d2093Smrg    Window	window;
109517ca54c3Smrg    BOOL	get_active;
109617ca54c3Smrg    CARD8	pad;
109717ca54c3Smrg    CARD16	pad2;
109817ca54c3Smrg} xRRGetMonitorsReq;
109917ca54c3Smrg#define sz_xRRGetMonitorsReq	12
110017ca54c3Smrg
110117ca54c3Smrgtypedef struct {
110217ca54c3Smrg    BYTE	type;
110317ca54c3Smrg    CARD8	status;
1104b54d2093Smrg    CARD16	sequenceNumber;
1105b54d2093Smrg    CARD32	length;
1106b54d2093Smrg    Time	timestamp;
1107b54d2093Smrg    CARD32	nmonitors;
1108b54d2093Smrg    CARD32	noutputs;
1109b54d2093Smrg    CARD32	pad1;
1110b54d2093Smrg    CARD32	pad2;
1111b54d2093Smrg    CARD32	pad3;
111217ca54c3Smrg} xRRGetMonitorsReply;
111317ca54c3Smrg#define sz_xRRGetMonitorsReply	32
111417ca54c3Smrg
111517ca54c3Smrgtypedef struct {
111617ca54c3Smrg    CARD8	reqType;
111717ca54c3Smrg    CARD8	randrReqType;
1118b54d2093Smrg    CARD16	length;
1119b54d2093Smrg    Window	window;
112017ca54c3Smrg    xRRMonitorInfo	monitor;
112117ca54c3Smrg} xRRSetMonitorReq;
112217ca54c3Smrg#define sz_xRRSetMonitorReq	32
112317ca54c3Smrg
112417ca54c3Smrgtypedef struct {
112517ca54c3Smrg    CARD8	reqType;
112617ca54c3Smrg    CARD8	randrReqType;
1127b54d2093Smrg    CARD16	length;
1128b54d2093Smrg    Window	window;
1129b54d2093Smrg    Atom	name;
113017ca54c3Smrg} xRRDeleteMonitorReq;
113117ca54c3Smrg#define sz_xRRDeleteMonitorReq	12
113217ca54c3Smrg
1133b54d2093Smrg#undef RRLease
113417ca54c3Smrg#undef RRModeFlags
113517ca54c3Smrg#undef RRCrtc
113617ca54c3Smrg#undef RRMode
113717ca54c3Smrg#undef RROutput
113817ca54c3Smrg#undef RRMode
113917ca54c3Smrg#undef RRCrtc
114017ca54c3Smrg#undef RRProvider
114117ca54c3Smrg#undef Drawable
114217ca54c3Smrg#undef Window
114317ca54c3Smrg#undef Font
114417ca54c3Smrg#undef Pixmap
114517ca54c3Smrg#undef Cursor
114617ca54c3Smrg#undef Colormap
114717ca54c3Smrg#undef GContext
114817ca54c3Smrg#undef Atom
114917ca54c3Smrg#undef Time
115017ca54c3Smrg#undef KeyCode
115117ca54c3Smrg#undef KeySym
115217ca54c3Smrg#undef Rotation
115317ca54c3Smrg#undef SizeID
115417ca54c3Smrg#undef SubpixelOrder
115517ca54c3Smrg
115617ca54c3Smrg#endif /* _XRANDRP_H_ */
1157