]> git.sesse.net Git - rdpsrv/blob - Xserver/include/extensions/Xdbeproto.h
Import X server from vnc-3.3.7.
[rdpsrv] / Xserver / include / extensions / Xdbeproto.h
1 /* $XConsortium: Xdbeproto.h /main/3 1995/09/22 10:20:16 dpw $ */
2 /******************************************************************************
3  * 
4  * Copyright (c) 1994, 1995  Hewlett-Packard Company
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining
7  * a copy of this software and associated documentation files (the
8  * "Software"), to deal in the Software without restriction, including
9  * without limitation the rights to use, copy, modify, merge, publish,
10  * distribute, sublicense, and/or sell copies of the Software, and to
11  * permit persons to whom the Software is furnished to do so, subject to
12  * the following conditions:
13  * 
14  * The above copyright notice and this permission notice shall be included
15  * in all copies or substantial portions of the Software.
16  * 
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20  * IN NO EVENT SHALL HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY CLAIM,
21  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
23  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24  * 
25  * Except as contained in this notice, the name of the Hewlett-Packard
26  * Company shall not be used in advertising or otherwise to promote the
27  * sale, use or other dealings in this Software without prior written
28  * authorization from the Hewlett-Packard Company.
29  * 
30  *     Header file for Xlib-related DBE
31  *
32  *****************************************************************************/
33
34
35 #ifndef XDBE_PROTO_H
36 #define XDBE_PROTO_H
37
38 /* INCLUDES */
39
40
41 /* DEFINES */
42
43 /* Values for swap_action field of XdbeSwapInfo structure */
44 #define XdbeUndefined    0
45 #define XdbeBackground   1
46 #define XdbeUntouched    2
47 #define XdbeCopied       3
48
49 #ifdef NEED_DBE_PROTOCOL
50
51 #define DBE_PROTOCOL_NAME "DOUBLE-BUFFER"
52
53 /* Current version numbers */
54 #define DBE_MAJOR_VERSION       1
55 #define DBE_MINOR_VERSION       0
56
57 /* Used when adding extension; also used in Xdbe macros */
58 #define DbeNumberEvents                 0
59 #define DbeBadBuffer                    0
60 #define DbeNumberErrors                 (DbeBadBuffer + 1)
61
62 /* Request values used in (S)ProcDbeDispatch() */
63 #define X_DbeGetVersion                 0
64 #define X_DbeAllocateBackBufferName     1
65 #define X_DbeDeallocateBackBufferName   2
66 #define X_DbeSwapBuffers                3
67 #define X_DbeBeginIdiom                 4
68 #define X_DbeEndIdiom                   5
69 #define X_DbeGetVisualInfo              6
70 #define X_DbeGetBackBufferAttributes    7
71
72 typedef CARD8  xDbeSwapAction;
73 typedef CARD32 xDbeBackBuffer;
74
75 #endif /* NEED_DBE_PROTOCOL */
76
77
78 /* TYPEDEFS */
79
80 /* Client data types */
81
82 /* XdbeVisualInfo and XdbeScreenVisualInfo are defined in this file,
83  * "Xdbeproto.h", rather than "Xdbe.h" because the server uses these data
84  * types.
85  */
86
87 typedef struct
88 {
89     VisualID    visual;    /* one visual ID that supports double-buffering */
90     int         depth;     /* depth of visual in bits                      */
91     int         perflevel; /* performance level of visual                  */
92 }
93 XdbeVisualInfo;
94
95 typedef struct
96 {
97     int                 count;          /* number of items in visual_depth   */
98     XdbeVisualInfo      *visinfo;       /* list of visuals & depths for scrn */
99 }
100 XdbeScreenVisualInfo;
101
102 /* Protocol data types */
103
104 #ifdef NEED_DBE_PROTOCOL
105
106 typedef struct
107 {
108     CARD32              window B32;     /* window      */
109     xDbeSwapAction      swapAction;     /* swap action */
110     CARD8               pad1;           /* unused      */
111     CARD16              pad2 B16;
112
113 } xDbeSwapInfo;
114
115 typedef struct
116 {
117     CARD32      visualID B32;   /* associated visual      */
118     CARD8       depth;          /* depth of visual        */
119     CARD8       perfLevel;      /* performance level hint */
120     CARD16      pad1 B16;
121
122 } xDbeVisInfo;
123 #define sz_xDbeVisInfo  8
124
125 typedef struct
126 {
127     CARD32      n B32;  /* number of visual info items in list  */
128
129 } xDbeScreenVisInfo;    /* followed by n xDbeVisInfo items */
130
131 typedef struct
132 {
133     CARD32      window B32;     /* window */
134
135 } xDbeBufferAttributes;
136
137
138 /* Requests and replies */
139
140 typedef struct
141 {
142     CARD8       reqType;        /* major-opcode: always codes->major_opcode */
143     CARD8       dbeReqType;     /* minor-opcode: always X_DbeGetVersion (0) */
144     CARD16      length B16;     /* request length: (2)                      */
145     CARD8       majorVersion;   /* client-major-version                     */
146     CARD8       minorVersion;   /* client-minor-version                     */
147     CARD16      unused B16;     /* unused                                   */
148
149 } xDbeGetVersionReq;
150 #define sz_xDbeGetVersionReq    8
151
152 typedef struct
153 {
154     BYTE        type;                   /* Reply: X_Reply (1)   */
155     CARD8       unused;                 /* unused               */
156     CARD16      sequenceNumber B16;     /* sequence number      */
157     CARD32      length B32;             /* reply length: (0)    */
158     CARD8       majorVersion;           /* server-major-version */
159     CARD8       minorVersion;           /* server-minor-version */
160     CARD16      pad1 B16;               /* unused               */
161     CARD32      pad2 B32;
162     CARD32      pad3 B32;
163     CARD32      pad4 B32;
164     CARD32      pad5 B32;
165     CARD32      pad6 B32;
166
167 } xDbeGetVersionReply;
168 #define sz_xDbeGetVersionReply  32
169
170 typedef struct
171 {
172     CARD8               reqType;        /* major-opcode: codes->major_opcode */
173     CARD8               dbeReqType;     /* X_DbeAllocateBackBufferName (1)   */
174     CARD16              length B16;     /* request length: (4)               */
175     CARD32              window B32;     /* window                            */
176     xDbeBackBuffer      buffer B32;     /* back buffer name                  */
177     xDbeSwapAction      swapAction;     /* swap action hint                  */
178     CARD8               pad1;           /* unused                            */
179     CARD16              pad2 B16;
180
181 } xDbeAllocateBackBufferNameReq;
182 #define sz_xDbeAllocateBackBufferNameReq        16
183
184 typedef struct
185 {
186     CARD8               reqType;        /* major-opcode: codes->major_opcode */
187     CARD8               dbeReqType;     /* X_DbeDeallocateBackBufferName (2) */
188     CARD16              length B16;     /* request length: (2)               */
189     xDbeBackBuffer      buffer B32;     /* back buffer name                  */
190
191 } xDbeDeallocateBackBufferNameReq;
192 #define sz_xDbeDeallocateBackBufferNameReq      8
193
194 typedef struct
195 {
196     CARD8       reqType;        /* major-opcode: always codes->major_opcode  */
197     CARD8       dbeReqType;     /* minor-opcode: always X_DbeSwapBuffers (3) */
198     CARD16      length B16;     /* request length: (2+2n)                    */
199     CARD32      n B32;          /* n, number of window/swap action pairs     */
200
201 } xDbeSwapBuffersReq;           /* followed by n window/swap action pairs    */
202 #define sz_xDbeSwapBuffersReq   8
203
204 typedef struct
205 {
206     CARD8       reqType;        /* major-opcode: always codes->major_opcode */
207     CARD8       dbeReqType;     /* minor-opcode: always X_DbeBeginIdom (4)  */
208     CARD16      length B16;     /* request length: (1)                      */
209
210 } xDbeBeginIdiomReq;
211 #define sz_xDbeBeginIdiomReq    4
212
213 typedef struct
214 {
215     CARD8       reqType;        /* major-opcode: always codes->major_opcode */
216     CARD8       dbeReqType;     /* minor-opcode: always X_DbeEndIdom (5)    */
217     CARD16      length B16;     /* request length: (1)                      */
218
219 } xDbeEndIdiomReq;
220 #define sz_xDbeEndIdiomReq      4
221
222 typedef struct
223 {
224     CARD8       reqType;        /* always codes->major_opcode     */
225     CARD8       dbeReqType;     /* always X_DbeGetVisualInfo (6)  */
226     CARD16      length B16;     /* request length: (2+n)          */
227     CARD32      n B32;          /* n, number of drawables in list */
228
229 } xDbeGetVisualInfoReq;         /* followed by n drawables        */
230 #define sz_xDbeGetVisualInfoReq 8
231
232 typedef struct
233 {
234     BYTE        type;                   /* Reply: X_Reply (1)                */
235     CARD8       unused;                 /* unused                            */
236     CARD16      sequenceNumber B16;     /* sequence number                   */
237     CARD32      length B32;             /* reply length                      */
238     CARD32      m;                      /* m, number of visual infos in list */
239     CARD32      pad1 B32;               /* unused                            */
240     CARD32      pad2 B32;
241     CARD32      pad3 B32;
242     CARD32      pad4 B32;
243     CARD32      pad5 B32;
244
245 } xDbeGetVisualInfoReply;               /* followed by m visual infos        */
246 #define sz_xDbeGetVisualInfoReply       32
247
248 typedef struct
249 {
250     CARD8               reqType;        /* always codes->major_opcode       */
251     CARD8               dbeReqType;     /* X_DbeGetBackBufferAttributes (7) */
252     CARD16              length B16;     /* request length: (2)              */
253     xDbeBackBuffer      buffer B32;     /* back buffer name                 */
254
255 } xDbeGetBackBufferAttributesReq;
256 #define sz_xDbeGetBackBufferAttributesReq       8
257
258 typedef struct
259 {
260     BYTE        type;                   /* Reply: X_Reply (1) */
261     CARD8       unused;                 /* unused             */
262     CARD16      sequenceNumber B16;     /* sequence number    */
263     CARD32      length B32;             /* reply length: (0)  */
264     CARD32      attributes;             /* attributes         */
265     CARD32      pad1 B32;               /* unused             */
266     CARD32      pad2 B32;
267     CARD32      pad3 B32;
268     CARD32      pad4 B32;
269     CARD32      pad5 B32;
270
271 } xDbeGetBackBufferAttributesReply;
272 #define sz_xDbeGetBackBufferAttributesReply     32
273
274 #endif /* NEED_DBE_PROTOCOL */
275
276 #endif /* XDBE_PROTO_H */
277