multibuf.h revision 485f0483
1485f0483Smrg/*
2485f0483Smrg * $Xorg: multibuf.h,v 1.4 2001/02/09 02:03:24 xorgcvs Exp $
3485f0483Smrg *
4485f0483SmrgCopyright 1989, 1998  The Open Group
5485f0483Smrg
6485f0483SmrgPermission to use, copy, modify, distribute, and sell this software and its
7485f0483Smrgdocumentation for any purpose is hereby granted without fee, provided that
8485f0483Smrgthe above copyright notice appear in all copies and that both that
9485f0483Smrgcopyright notice and this permission notice appear in supporting
10485f0483Smrgdocumentation.
11485f0483Smrg
12485f0483SmrgThe above copyright notice and this permission notice shall be included in
13485f0483Smrgall copies or substantial portions of the Software.
14485f0483Smrg
15485f0483SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16485f0483SmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17485f0483SmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
18485f0483SmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
19485f0483SmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20485f0483SmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21485f0483Smrg
22485f0483SmrgExcept as contained in this notice, the name of The Open Group shall not be
23485f0483Smrgused in advertising or otherwise to promote the sale, use or other dealings
24485f0483Smrgin this Software without prior written authorization from The Open Group.
25485f0483Smrg */
26485f0483Smrg
27485f0483Smrg/* $XFree86: xc/include/extensions/multibuf.h,v 3.4 2001/12/14 19:53:28 dawes Exp $ */
28485f0483Smrg
29485f0483Smrg#ifndef _MULTIBUF_H_
30485f0483Smrg#define _MULTIBUF_H_
31485f0483Smrg
32485f0483Smrg#include <X11/Xfuncproto.h>
33485f0483Smrg
34485f0483Smrg#include <X11/extensions/multibufconst.h>
35485f0483Smrg
36485f0483Smrg#if !defined(UNIXCPP) || defined(ANSICPP)
37485f0483Smrg#define MbufGetReq(name,req,info) GetReq (name, req); \
38485f0483Smrg	req->reqType = info->codes->major_opcode; \
39485f0483Smrg	req->mbufReqType = X_##name;
40485f0483Smrg#else
41485f0483Smrg#define MbufGetReq(name,req,info) GetReq (name, req); \
42485f0483Smrg	req->reqType = info->codes->major_opcode; \
43485f0483Smrg	req->mbufReqType = X_/**/name;
44485f0483Smrg#endif
45485f0483Smrg
46485f0483Smrg/*
47485f0483Smrg * Extra definitions that will only be needed in the client
48485f0483Smrg */
49485f0483Smrgtypedef XID Multibuffer;
50485f0483Smrg
51485f0483Smrgtypedef struct {
52485f0483Smrg    int	type;		    /* of event */
53485f0483Smrg    unsigned long serial;   /* # of last request processed by server */
54485f0483Smrg    int send_event;	    /* true if this came frome a SendEvent request */
55485f0483Smrg    Display *display;	    /* Display the event was read from */
56485f0483Smrg    Multibuffer buffer;	    /* buffer of event */
57485f0483Smrg    int	state;		    /* see Clobbered constants above */
58485f0483Smrg} XmbufClobberNotifyEvent;
59485f0483Smrg
60485f0483Smrgtypedef struct {
61485f0483Smrg    int	type;		    /* of event */
62485f0483Smrg    unsigned long serial;   /* # of last request processed by server */
63485f0483Smrg    int send_event;	    /* true if this came frome a SendEvent request */
64485f0483Smrg    Display *display;	    /* Display the event was read from */
65485f0483Smrg    Multibuffer buffer;	    /* buffer of event */
66485f0483Smrg} XmbufUpdateNotifyEvent;
67485f0483Smrg
68485f0483Smrg
69485f0483Smrg/*
70485f0483Smrg * per-window attributes that can be got
71485f0483Smrg */
72485f0483Smrgtypedef struct {
73485f0483Smrg    int displayed_index;	/* which buffer is being displayed */
74485f0483Smrg    int update_action;		/* Undefined, Background, Untouched, Copied */
75485f0483Smrg    int update_hint;		/* Frequent, Intermittent, Static */
76485f0483Smrg    int window_mode;		/* Mono, Stereo */
77485f0483Smrg    int nbuffers;		/* Number of buffers */
78485f0483Smrg    Multibuffer *buffers;	/* Buffers */
79485f0483Smrg} XmbufWindowAttributes;
80485f0483Smrg
81485f0483Smrg/*
82485f0483Smrg * per-window attributes that can be set
83485f0483Smrg */
84485f0483Smrgtypedef struct {
85485f0483Smrg    int update_hint;		/* Frequent, Intermittent, Static */
86485f0483Smrg} XmbufSetWindowAttributes;
87485f0483Smrg
88485f0483Smrg
89485f0483Smrg/*
90485f0483Smrg * per-buffer attributes that can be got
91485f0483Smrg */
92485f0483Smrgtypedef struct {
93485f0483Smrg    Window window;		/* which window this belongs to */
94485f0483Smrg    unsigned long event_mask;	/* events that have been selected */
95485f0483Smrg    int buffer_index;		/* which buffer is this */
96485f0483Smrg    int side;			/* Mono, Left, Right */
97485f0483Smrg} XmbufBufferAttributes;
98485f0483Smrg
99485f0483Smrg/*
100485f0483Smrg * per-buffer attributes that can be set
101485f0483Smrg */
102485f0483Smrgtypedef struct {
103485f0483Smrg    unsigned long event_mask;	/* events that have been selected */
104485f0483Smrg} XmbufSetBufferAttributes;
105485f0483Smrg
106485f0483Smrg
107485f0483Smrg/*
108485f0483Smrg * per-screen buffer info (there will be lists of them)
109485f0483Smrg */
110485f0483Smrgtypedef struct {
111485f0483Smrg    VisualID visualid;		/* visual usuable at this depth */
112485f0483Smrg    int max_buffers;		/* most buffers for this visual */
113485f0483Smrg    int depth;			/* depth of buffers to be created */
114485f0483Smrg} XmbufBufferInfo;
115485f0483Smrg
116485f0483Smrg_XFUNCPROTOBEGIN
117485f0483Smrg
118485f0483Smrgextern Bool XmbufQueryExtension(
119485f0483Smrg    Display*		/* dpy */,
120485f0483Smrg    int*		/* event_base_return */,
121485f0483Smrg    int*		/* error_base_return */
122485f0483Smrg);
123485f0483Smrg
124485f0483Smrgextern Status XmbufGetVersion(
125485f0483Smrg    Display*		/* dpy */,
126485f0483Smrg    int*		/* major_version_return */,
127485f0483Smrg    int*		/* minor_version_return */
128485f0483Smrg);
129485f0483Smrg
130485f0483Smrgextern int XmbufCreateBuffers(
131485f0483Smrg    Display*		/* dpy */,
132485f0483Smrg    Window		/* w */,
133485f0483Smrg    int			/* count */,
134485f0483Smrg    int			/* update_action */,
135485f0483Smrg    int			/* update_hint */,
136485f0483Smrg    Multibuffer*	/* buffers */
137485f0483Smrg);
138485f0483Smrg
139485f0483Smrgextern void XmbufDestroyBuffers(
140485f0483Smrg    Display*		/* dpy */,
141485f0483Smrg    Window		/* window */
142485f0483Smrg);
143485f0483Smrg
144485f0483Smrgextern void XmbufDisplayBuffers(
145485f0483Smrg    Display*		/* dpy */,
146485f0483Smrg    int			/* count */,
147485f0483Smrg    Multibuffer*	/* buffers */,
148485f0483Smrg    int			/* min_delay */,
149485f0483Smrg    int			/* max_delay */
150485f0483Smrg);
151485f0483Smrg
152485f0483Smrgextern Status XmbufGetWindowAttributes(
153485f0483Smrg    Display*			/* dpy */,
154485f0483Smrg    Window			/* w */,
155485f0483Smrg    XmbufWindowAttributes*	/* attr */
156485f0483Smrg);
157485f0483Smrg
158485f0483Smrgextern void XmbufChangeWindowAttributes(
159485f0483Smrg    Display*			/* dpy */,
160485f0483Smrg    Window			/* w */,
161485f0483Smrg    unsigned long		/* valuemask */,
162485f0483Smrg    XmbufSetWindowAttributes*	/* attr */
163485f0483Smrg);
164485f0483Smrg
165485f0483Smrgextern Status XmbufGetBufferAttributes(
166485f0483Smrg    Display*			/* dpy */,
167485f0483Smrg    Multibuffer			/* b */,
168485f0483Smrg    XmbufBufferAttributes*	/* attr */
169485f0483Smrg);
170485f0483Smrg
171485f0483Smrgextern void XmbufChangeBufferAttributes(
172485f0483Smrg    Display*			/* dpy */,
173485f0483Smrg    Multibuffer			/* b */,
174485f0483Smrg    unsigned long		/* valuemask */,
175485f0483Smrg    XmbufSetBufferAttributes*	/* attr */
176485f0483Smrg);
177485f0483Smrg
178485f0483Smrgextern Status XmbufGetScreenInfo(
179485f0483Smrg    Display*			/* dpy */,
180485f0483Smrg    Drawable			/* d */,
181485f0483Smrg    int*			/* nmono_return */,
182485f0483Smrg    XmbufBufferInfo**		/* mono_info_return */,
183485f0483Smrg    int*			/* nstereo_return */,
184485f0483Smrg    XmbufBufferInfo**		/* stereo_info_return */
185485f0483Smrg);
186485f0483Smrg
187485f0483Smrgextern Window XmbufCreateStereoWindow(
188485f0483Smrg    Display*			/* dpy */,
189485f0483Smrg    Window			/* parent */,
190485f0483Smrg    int				/* x */,
191485f0483Smrg    int				/* y */,
192485f0483Smrg    unsigned int		/* width */,
193485f0483Smrg    unsigned int		/* height */,
194485f0483Smrg    unsigned int		/* border_width */,
195485f0483Smrg    int				/* depth */,
196485f0483Smrg    unsigned int		/* class */,
197485f0483Smrg    Visual*			/* visual */,
198485f0483Smrg    unsigned long		/* valuemask */,
199485f0483Smrg    XSetWindowAttributes*	/* attr */,
200485f0483Smrg    Multibuffer*		/* leftp */,
201485f0483Smrg    Multibuffer*		/* rightp */
202485f0483Smrg);
203485f0483Smrg
204485f0483Smrgextern void XmbufClearBufferArea(
205485f0483Smrg    Display*			/* dpy */,
206485f0483Smrg    Multibuffer			/* buffer */,
207485f0483Smrg    int				/* x */,
208485f0483Smrg    int				/* y */,
209485f0483Smrg    unsigned int		/* width */,
210485f0483Smrg    unsigned int		/* height */,
211485f0483Smrg    Bool			/* exposures */
212485f0483Smrg);
213485f0483Smrg
214485f0483Smrg_XFUNCPROTOEND
215485f0483Smrg
216485f0483Smrg#endif /* _MULTIBUF_H_ */
217