multibufproto.h revision 17ca54c3
1/*
2Copyright 1989, 1998  The Open Group
3
4Permission to use, copy, modify, distribute, and sell this software and its
5documentation for any purpose is hereby granted without fee, provided that
6the above copyright notice appear in all copies and that both that
7copyright notice and this permission notice appear in supporting
8documentation.
9
10The above copyright notice and this permission notice shall be included in
11all copies or substantial portions of the Software.
12
13THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
16OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
17AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19
20Except as contained in this notice, the name of The Open Group shall not be
21used in advertising or otherwise to promote the sale, use or other dealings
22in this Software without prior written authorization from The Open Group.
23 */
24
25#ifndef _MULTIBUFPROTO_H_
26#define _MULTIBUFPROTO_H_
27
28#include <X11/extensions/multibufconst.h>
29
30/*
31 * Protocol requests constants and alignment values
32 */
33
34#define Window CARD32
35#define Drawable CARD32
36#define VisualID CARD32
37#define Multibuffer CARD32
38
39#define X_MbufGetBufferVersion		0
40#define X_MbufCreateImageBuffers	1
41#define X_MbufDestroyImageBuffers	2
42#define X_MbufDisplayImageBuffers	3
43#define X_MbufSetMBufferAttributes	4
44#define X_MbufGetMBufferAttributes	5
45#define X_MbufSetBufferAttributes	6
46#define X_MbufGetBufferAttributes	7
47#define X_MbufGetBufferInfo		8
48#define X_MbufCreateStereoWindow	9
49#define X_MbufClearImageBufferArea	10
50
51
52typedef struct xMbufBufferInfo {
53	CARD32	visualID B32;		/* associated visual */
54	CARD16	maxBuffers B16;		/* maximum supported buffers */
55	CARD8	depth;			/* depth of visual (redundant) */
56	CARD8	unused;
57} xMbufBufferInfo;
58#define sz_xMbufBufferInfo 8
59
60typedef struct {
61    BYTE    type;
62    BYTE    unused;
63    CARD16  sequenceNumber B16;
64    CARD32  buffer B32;			/* affected buffer */
65    BYTE    state;			/* current status */
66    CARD8   unused1;
67    CARD16  unused2 B16;
68    CARD32  unused3 B32;
69    CARD32  unused4 B32;
70    CARD32  unused5 B32;
71    CARD32  unused6 B32;
72    CARD32  unused7 B32;
73} xMbufClobberNotifyEvent;
74
75typedef struct {
76    BYTE    type;
77    BYTE    unused;
78    CARD16  sequenceNumber B16;
79    CARD32  buffer B32;			/* affected buffer */
80    CARD32  timeStamp B32;		/* update time */
81    CARD32  unused1 B32;
82    CARD32  unused2 B32;
83    CARD32  unused3 B32;
84    CARD32  unused4 B32;
85    CARD32  unused5 B32;
86    CARD32  unused6 B32;
87} xMbufUpdateNotifyEvent;
88
89typedef struct {
90    CARD8	reqType;		/* always codes->major_opcode */
91    CARD8	mbufReqType;		/* always X_MbufGetBufferVersion */
92    CARD16	length B16;
93} xMbufGetBufferVersionReq;
94#define sz_xMbufGetBufferVersionReq	4
95
96typedef struct {
97    BYTE	type;			/* X_Reply */
98    CARD8	unused;			/* not used */
99    CARD16	sequenceNumber B16;
100    CARD32	length B32;
101    CARD8	majorVersion;	/* major version of Multi-Buffering protocol */
102    CARD8	minorVersion;	/* minor version of Multi-Buffering protocol */
103    CARD16	pad1 B16;
104    CARD32	pad2 B32;
105    CARD32	pad3 B32;
106    CARD32	pad4 B32;
107    CARD32	pad5 B32;
108    CARD32	pad6 B32;
109} xMbufGetBufferVersionReply;
110#define sz_xMbufGetBufferVersionReply	32
111
112typedef struct {
113    CARD8	reqType;	/* always codes->major_opcode */
114    CARD8	mbufReqType;	/* always X_MbufCreateImageBuffers */
115    CARD16	length B16;
116    CARD32	window B32;	/* associated window */
117    CARD8	updateAction;	/* action at update */
118    CARD8	updateHint;	/* hint as to frequency of updates */
119    CARD16	unused;
120} xMbufCreateImageBuffersReq;	/* followed by buffer ids */
121#define sz_xMbufCreateImageBuffersReq	12
122
123typedef struct {
124    BYTE	type;			/* X_Reply */
125    CARD8	unused;			/* not used */
126    CARD16	sequenceNumber B16;
127    CARD32	length B32;
128    CARD16	numberBuffer B16;	/* number successfully allocated */
129    CARD16	unused1 B16;
130    CARD32	unused2 B32;
131    CARD32	unused3 B32;
132    CARD32	unused4 B32;
133    CARD32	unused5 B32;
134    CARD32	unused6 B32;
135} xMbufCreateImageBuffersReply;
136#define sz_xMbufCreateImageBuffersReply 32
137
138typedef struct {
139    CARD8	reqType;	/* always codes->major_opcode */
140    CARD8	mbufReqType;	/* always X_MbufDestroyImageBuffers */
141    CARD16	length B16;
142    CARD32	window B32;	/* associated window */
143} xMbufDestroyImageBuffersReq;
144#define sz_xMbufDestroyImageBuffersReq	8
145
146typedef struct {
147    CARD8	reqType;	/* always codes->major_opcode */
148    CARD8	mbufReqType;	/* always X_MbufDisplayImageBuffers */
149    CARD16	length B16;
150    CARD16	minDelay B16;	/* minimum time between last update and now */
151    CARD16	maxDelay B16;	/* maximum time between last update and now */
152} xMbufDisplayImageBuffersReq;	/* followed by list of buffers */
153#define sz_xMbufDisplayImageBuffersReq	8
154
155typedef struct {
156    CARD8	reqType;	/* always codes->major_opcode */
157    CARD8	mbufReqType;	/* always X_MbufSetMBufferAttributes */
158    CARD16	length B16;
159    CARD32	window B32;	/* associated window */
160    CARD32	valueMask B32;	/* modified entries */
161} xMbufSetMBufferAttributesReq;	/* followed by values */
162#define sz_xMbufSetMBufferAttributesReq 12
163
164typedef struct {
165    CARD8	reqType;	/* always codes->major_opcode */
166    CARD8	mbufReqType;	/* always X_MbufGetMBufferAttributes */
167    CARD16	length B16;
168    CARD32	window B32;	/* associated window */
169} xMbufGetMBufferAttributesReq;
170#define sz_xMbufGetMBufferAttributesReq 8
171
172typedef struct {
173    BYTE	type;			/* X_Reply */
174    CARD8	unused;			/* not used */
175    CARD16	sequenceNumber B16;
176    CARD32	length B32;
177    CARD16	displayedBuffer B16;	/* currently visible buffer */
178    CARD8	updateAction;
179    CARD8	updateHint;
180    CARD8	windowMode;
181    CARD8	unused0;
182    CARD16	unused1 B16;
183    CARD32	unused2 B32;
184    CARD32	unused3 B32;
185    CARD32	unused4 B32;
186    CARD32	unused5 B32;
187} xMbufGetMBufferAttributesReply;
188#define sz_xMbufGetMBufferAttributesReply 32
189
190typedef struct {
191    CARD8	reqType;	/* always codes->major_opcode */
192    CARD8	mbufReqType;	/* always X_MbufSetBufferAttributes */
193    CARD16	length B16;
194    CARD32	buffer B32;
195    CARD32	valueMask B32;
196} xMbufSetBufferAttributesReq;	/* followed by values */
197#define sz_xMbufSetBufferAttributesReq 12
198
199typedef struct {
200    CARD8	reqType;	/* always codes->major_opcode */
201    CARD8	mbufReqType;	/* always X_MbufGetBufferAttributes */
202    CARD16	length B16;
203    CARD32	buffer B32;
204} xMbufGetBufferAttributesReq;
205#define sz_xMbufGetBufferAttributesReq 8
206
207typedef struct {
208    BYTE	type;			/* X_Reply */
209    CARD8	unused;			/* not used */
210    CARD16	sequenceNumber B16;
211    CARD32	length B32;
212    CARD32	window B32;
213    CARD32	eventMask B32;
214    CARD16	bufferIndex B16;
215    CARD8	side;
216    CARD8	unused0;
217    CARD32	unused1 B32;
218    CARD32	unused2 B32;
219    CARD32	unused3 B32;
220} xMbufGetBufferAttributesReply;
221#define sz_xMbufGetBufferAttributesReply 32
222
223typedef struct {
224    CARD8	reqType;	/* always codes->major_opcode */
225    CARD8	mbufReqType;	/* always X_MbufGetBufferInfo */
226    CARD16	length B16;
227    Drawable	drawable B32;
228} xMbufGetBufferInfoReq;
229#define sz_xMbufGetBufferInfoReq 8
230
231typedef struct {
232    BYTE	type;			/* X_Reply */
233    CARD8	unused;			/* not used */
234    CARD16	sequenceNumber B16;
235    CARD32	length B32;
236    CARD16	normalInfo B16;
237    CARD16	stereoInfo B16;
238    CARD32	unused1 B32;
239    CARD32	unused2 B32;
240    CARD32	unused3 B32;
241    CARD32	unused4 B32;
242    CARD32	unused5 B32;
243} xMbufGetBufferInfoReply;			/* followed by buffer infos */
244#define sz_xMbufGetBufferInfoReply 32
245
246
247typedef struct {
248    CARD8	reqType;	/* always codes->major_opcode */
249    CARD8	mbufReqType;	/* always X_MbufCreateStereoWindow */
250    CARD16	length B16;
251    CARD8	unused0;
252    CARD8	unused1;
253    CARD8	unused2;
254    CARD8	depth;
255    Window	wid B32;
256    Window	parent B32;
257    Multibuffer	left B32;	/* associated buffers */
258    Multibuffer	right B32;
259    INT16	x B16;
260    INT16	y B16;
261    CARD16	width B16;
262    CARD16	height B16;
263    CARD16	borderWidth B16;
264#if defined(__cplusplus) || defined(c_plusplus)
265    CARD16	c_class B16;
266#else
267    CARD16	class B16;
268#endif
269    VisualID	visual B32;
270    CARD32	mask B32;
271} xMbufCreateStereoWindowReq;		/* followed by value list */
272#define sz_xMbufCreateStereoWindowReq 44
273
274typedef struct {
275    CARD8     reqType;        /* always codes->major_opcode */
276    CARD8     mbufReqType;    /* always X_MbufClearImageBufferArea */
277    CARD16    length B16;
278    Multibuffer       buffer B32;
279    INT16     x B16;
280    INT16     y B16;
281    CARD16    width B16;
282    CARD16    height B16;
283    CARD8     unused0;
284    CARD8     unused1;
285    CARD8     unused2;
286    BOOL      exposures;
287} xMbufClearImageBufferAreaReq;
288#define sz_xMbufClearImageBufferAreaReq 20
289
290#undef Window
291#undef Drawable
292#undef VisualID
293#undef Multibuffer
294
295#endif /* _MULTIBUFPROTO_H_ */
296