VirtualBox

source: vbox/trunk/src/VBox/Additions/x11/x11include/7.0/X11/extensions/multibuf.h@ 6202

Last change on this file since 6202 was 6202, checked in by vboxsync, 17 years ago

re-export x11

  • Property svn:eol-style set to native
File size: 8.4 KB
Line 
1/*
2 * $Xorg: multibuf.h,v 1.4 2001/02/09 02:03:24 xorgcvs Exp $
3 *
4Copyright 1989, 1998 The Open Group
5
6Permission to use, copy, modify, distribute, and sell this software and its
7documentation for any purpose is hereby granted without fee, provided that
8the above copyright notice appear in all copies and that both that
9copyright notice and this permission notice appear in supporting
10documentation.
11
12The above copyright notice and this permission notice shall be included in
13all copies or substantial portions of the Software.
14
15THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
19AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
22Except as contained in this notice, the name of The Open Group shall not be
23used in advertising or otherwise to promote the sale, use or other dealings
24in this Software without prior written authorization from The Open Group.
25 */
26
27/* $XFree86: xc/include/extensions/multibuf.h,v 3.4 2001/12/14 19:53:28 dawes Exp $ */
28
29#ifndef _MULTIBUF_H_
30#define _MULTIBUF_H_
31
32#include <X11/Xfuncproto.h>
33
34#define MULTIBUFFER_PROTOCOL_NAME "Multi-Buffering"
35
36#define MULTIBUFFER_MAJOR_VERSION 1 /* current version numbers */
37#define MULTIBUFFER_MINOR_VERSION 1 /* has ClearImageBufferArea */
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/*
52 * update_action field
53 */
54#define MultibufferUpdateActionUndefined 0
55#define MultibufferUpdateActionBackground 1
56#define MultibufferUpdateActionUntouched 2
57#define MultibufferUpdateActionCopied 3
58
59/*
60 * update_hint field
61 */
62#define MultibufferUpdateHintFrequent 0
63#define MultibufferUpdateHintIntermittent 1
64#define MultibufferUpdateHintStatic 2
65
66/*
67 * valuemask fields
68 */
69#define MultibufferWindowUpdateHint (1L << 0)
70#define MultibufferBufferEventMask (1L << 0)
71
72/*
73 * mono vs. stereo and left vs. right
74 */
75#define MultibufferModeMono 0
76#define MultibufferModeStereo 1
77#define MultibufferSideMono 0
78#define MultibufferSideLeft 1
79#define MultibufferSideRight 2
80
81/*
82 * clobber state
83 */
84#define MultibufferUnclobbered 0
85#define MultibufferPartiallyClobbered 1
86#define MultibufferFullyClobbered 2
87
88/*
89 * event stuff
90 */
91#define MultibufferClobberNotifyMask 0x02000000
92#define MultibufferUpdateNotifyMask 0x04000000
93
94#define MultibufferClobberNotify 0
95#define MultibufferUpdateNotify 1
96#define MultibufferNumberEvents (MultibufferUpdateNotify + 1)
97
98#define MultibufferBadBuffer 0
99#define MultibufferNumberErrors (MultibufferBadBuffer + 1)
100
101
102#ifndef _MULTIBUF_SERVER_
103/*
104 * Extra definitions that will only be needed in the client
105 */
106typedef XID Multibuffer;
107
108typedef struct {
109 int type; /* of event */
110 unsigned long serial; /* # of last request processed by server */
111 int send_event; /* true if this came frome a SendEvent request */
112 Display *display; /* Display the event was read from */
113 Multibuffer buffer; /* buffer of event */
114 int state; /* see Clobbered constants above */
115} XmbufClobberNotifyEvent;
116
117typedef struct {
118 int type; /* of event */
119 unsigned long serial; /* # of last request processed by server */
120 int send_event; /* true if this came frome a SendEvent request */
121 Display *display; /* Display the event was read from */
122 Multibuffer buffer; /* buffer of event */
123} XmbufUpdateNotifyEvent;
124
125
126/*
127 * per-window attributes that can be got
128 */
129typedef struct {
130 int displayed_index; /* which buffer is being displayed */
131 int update_action; /* Undefined, Background, Untouched, Copied */
132 int update_hint; /* Frequent, Intermittent, Static */
133 int window_mode; /* Mono, Stereo */
134 int nbuffers; /* Number of buffers */
135 Multibuffer *buffers; /* Buffers */
136} XmbufWindowAttributes;
137
138/*
139 * per-window attributes that can be set
140 */
141typedef struct {
142 int update_hint; /* Frequent, Intermittent, Static */
143} XmbufSetWindowAttributes;
144
145
146/*
147 * per-buffer attributes that can be got
148 */
149typedef struct {
150 Window window; /* which window this belongs to */
151 unsigned long event_mask; /* events that have been selected */
152 int buffer_index; /* which buffer is this */
153 int side; /* Mono, Left, Right */
154} XmbufBufferAttributes;
155
156/*
157 * per-buffer attributes that can be set
158 */
159typedef struct {
160 unsigned long event_mask; /* events that have been selected */
161} XmbufSetBufferAttributes;
162
163
164/*
165 * per-screen buffer info (there will be lists of them)
166 */
167typedef struct {
168 VisualID visualid; /* visual usuable at this depth */
169 int max_buffers; /* most buffers for this visual */
170 int depth; /* depth of buffers to be created */
171} XmbufBufferInfo;
172
173_XFUNCPROTOBEGIN
174
175extern Bool XmbufQueryExtension(
176 Display* /* dpy */,
177 int* /* event_base_return */,
178 int* /* error_base_return */
179);
180
181extern Status XmbufGetVersion(
182 Display* /* dpy */,
183 int* /* major_version_return */,
184 int* /* minor_version_return */
185);
186
187extern int XmbufCreateBuffers(
188 Display* /* dpy */,
189 Window /* w */,
190 int /* count */,
191 int /* update_action */,
192 int /* update_hint */,
193 Multibuffer* /* buffers */
194);
195
196extern void XmbufDestroyBuffers(
197 Display* /* dpy */,
198 Window /* window */
199);
200
201extern void XmbufDisplayBuffers(
202 Display* /* dpy */,
203 int /* count */,
204 Multibuffer* /* buffers */,
205 int /* min_delay */,
206 int /* max_delay */
207);
208
209extern Status XmbufGetWindowAttributes(
210 Display* /* dpy */,
211 Window /* w */,
212 XmbufWindowAttributes* /* attr */
213);
214
215extern void XmbufChangeWindowAttributes(
216 Display* /* dpy */,
217 Window /* w */,
218 unsigned long /* valuemask */,
219 XmbufSetWindowAttributes* /* attr */
220);
221
222extern Status XmbufGetBufferAttributes(
223 Display* /* dpy */,
224 Multibuffer /* b */,
225 XmbufBufferAttributes* /* attr */
226);
227
228extern void XmbufChangeBufferAttributes(
229 Display* /* dpy */,
230 Multibuffer /* b */,
231 unsigned long /* valuemask */,
232 XmbufSetBufferAttributes* /* attr */
233);
234
235extern Status XmbufGetScreenInfo(
236 Display* /* dpy */,
237 Drawable /* d */,
238 int* /* nmono_return */,
239 XmbufBufferInfo** /* mono_info_return */,
240 int* /* nstereo_return */,
241 XmbufBufferInfo** /* stereo_info_return */
242);
243
244extern Window XmbufCreateStereoWindow(
245 Display* /* dpy */,
246 Window /* parent */,
247 int /* x */,
248 int /* y */,
249 unsigned int /* width */,
250 unsigned int /* height */,
251 unsigned int /* border_width */,
252 int /* depth */,
253 unsigned int /* class */,
254 Visual* /* visual */,
255 unsigned long /* valuemask */,
256 XSetWindowAttributes* /* attr */,
257 Multibuffer* /* leftp */,
258 Multibuffer* /* rightp */
259);
260
261extern void XmbufClearBufferArea(
262 Display* /* dpy */,
263 Multibuffer /* buffer */,
264 int /* x */,
265 int /* y */,
266 unsigned int /* width */,
267 unsigned int /* height */,
268 Bool /* exposures */
269);
270
271_XFUNCPROTOEND
272
273#else
274
275#include "scrnintstr.h"
276
277typedef Bool (* mbInitFunc)();
278
279struct _mbufScreen; /* declared in multibufst.h */
280
281extern void RegisterMultibufferInit(
282 ScreenPtr /* pScreen */,
283 Bool (* /* bufMultibufferInit */)(
284 ScreenPtr /* pScreen */,
285 struct _mbufScreen * /* pMBScreen */
286 )
287);
288
289struct xMbufBufferInfo; /* declared in multibufst.h */
290
291extern void RegisterDoubleBufferHardware(
292 ScreenPtr /* pScreen */,
293 int /* nInfo */,
294 struct xMbufBufferInfo * /* pInfo */,
295 DevUnion * /* frameBuffer */,
296 DevUnion /* selectPlane */,
297 void (* /* CopyBufferBitsFunc */ )(),
298 void (* /* DrawSelectPlaneFunc */ )()
299);
300
301extern int CreateImageBuffers (
302 WindowPtr /* pWin */,
303 int /* nbuf */,
304 XID * /* ids */,
305 int /* action */,
306 int /* hint */
307);
308extern void DestroyImageBuffers (
309 WindowPtr /* pWin */
310);
311extern int DisplayImageBuffers (
312 XID * /* ids */,
313 int /* nbuf */
314);
315
316#endif /* _MULTIBUF_SERVER_ */
317#endif /* _MULTIBUF_H_ */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette