1 | /*
|
---|
2 | *
|
---|
3 | Copyright 1989, 1998 The Open Group
|
---|
4 |
|
---|
5 | Permission to use, copy, modify, distribute, and sell this software and its
|
---|
6 | documentation for any purpose is hereby granted without fee, provided that
|
---|
7 | the above copyright notice appear in all copies and that both that
|
---|
8 | copyright notice and this permission notice appear in supporting
|
---|
9 | documentation.
|
---|
10 |
|
---|
11 | The above copyright notice and this permission notice shall be included in
|
---|
12 | all copies or substantial portions of the Software.
|
---|
13 |
|
---|
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
---|
15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
---|
16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
---|
17 | OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
---|
18 | AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
---|
19 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
---|
20 |
|
---|
21 | Except as contained in this notice, the name of The Open Group shall not be
|
---|
22 | used in advertising or otherwise to promote the sale, use or other dealings
|
---|
23 | in this Software without prior written authorization from The Open Group.
|
---|
24 | */
|
---|
25 |
|
---|
26 | #ifndef _MULTIBUF_H_
|
---|
27 | #define _MULTIBUF_H_
|
---|
28 |
|
---|
29 | #include <X11/Xfuncproto.h>
|
---|
30 |
|
---|
31 | #include <X11/extensions/multibufconst.h>
|
---|
32 |
|
---|
33 | #if !defined(UNIXCPP) || defined(ANSICPP)
|
---|
34 | #define MbufGetReq(name,req,info) GetReq (name, req); \
|
---|
35 | req->reqType = info->codes->major_opcode; \
|
---|
36 | req->mbufReqType = X_##name;
|
---|
37 | #else
|
---|
38 | #define MbufGetReq(name,req,info) GetReq (name, req); \
|
---|
39 | req->reqType = info->codes->major_opcode; \
|
---|
40 | req->mbufReqType = X_/**/name;
|
---|
41 | #endif
|
---|
42 |
|
---|
43 | /*
|
---|
44 | * Extra definitions that will only be needed in the client
|
---|
45 | */
|
---|
46 | typedef XID Multibuffer;
|
---|
47 |
|
---|
48 | typedef struct {
|
---|
49 | int type; /* of event */
|
---|
50 | unsigned long serial; /* # of last request processed by server */
|
---|
51 | int send_event; /* true if this came frome a SendEvent request */
|
---|
52 | Display *display; /* Display the event was read from */
|
---|
53 | Multibuffer buffer; /* buffer of event */
|
---|
54 | int state; /* see Clobbered constants above */
|
---|
55 | } XmbufClobberNotifyEvent;
|
---|
56 |
|
---|
57 | typedef struct {
|
---|
58 | int type; /* of event */
|
---|
59 | unsigned long serial; /* # of last request processed by server */
|
---|
60 | int send_event; /* true if this came frome a SendEvent request */
|
---|
61 | Display *display; /* Display the event was read from */
|
---|
62 | Multibuffer buffer; /* buffer of event */
|
---|
63 | } XmbufUpdateNotifyEvent;
|
---|
64 |
|
---|
65 |
|
---|
66 | /*
|
---|
67 | * per-window attributes that can be got
|
---|
68 | */
|
---|
69 | typedef struct {
|
---|
70 | int displayed_index; /* which buffer is being displayed */
|
---|
71 | int update_action; /* Undefined, Background, Untouched, Copied */
|
---|
72 | int update_hint; /* Frequent, Intermittent, Static */
|
---|
73 | int window_mode; /* Mono, Stereo */
|
---|
74 | int nbuffers; /* Number of buffers */
|
---|
75 | Multibuffer *buffers; /* Buffers */
|
---|
76 | } XmbufWindowAttributes;
|
---|
77 |
|
---|
78 | /*
|
---|
79 | * per-window attributes that can be set
|
---|
80 | */
|
---|
81 | typedef struct {
|
---|
82 | int update_hint; /* Frequent, Intermittent, Static */
|
---|
83 | } XmbufSetWindowAttributes;
|
---|
84 |
|
---|
85 |
|
---|
86 | /*
|
---|
87 | * per-buffer attributes that can be got
|
---|
88 | */
|
---|
89 | typedef struct {
|
---|
90 | Window window; /* which window this belongs to */
|
---|
91 | unsigned long event_mask; /* events that have been selected */
|
---|
92 | int buffer_index; /* which buffer is this */
|
---|
93 | int side; /* Mono, Left, Right */
|
---|
94 | } XmbufBufferAttributes;
|
---|
95 |
|
---|
96 | /*
|
---|
97 | * per-buffer attributes that can be set
|
---|
98 | */
|
---|
99 | typedef struct {
|
---|
100 | unsigned long event_mask; /* events that have been selected */
|
---|
101 | } XmbufSetBufferAttributes;
|
---|
102 |
|
---|
103 |
|
---|
104 | /*
|
---|
105 | * per-screen buffer info (there will be lists of them)
|
---|
106 | */
|
---|
107 | typedef struct {
|
---|
108 | VisualID visualid; /* visual usuable at this depth */
|
---|
109 | int max_buffers; /* most buffers for this visual */
|
---|
110 | int depth; /* depth of buffers to be created */
|
---|
111 | } XmbufBufferInfo;
|
---|
112 |
|
---|
113 | _XFUNCPROTOBEGIN
|
---|
114 |
|
---|
115 | extern Bool XmbufQueryExtension(
|
---|
116 | Display* /* dpy */,
|
---|
117 | int* /* event_base_return */,
|
---|
118 | int* /* error_base_return */
|
---|
119 | );
|
---|
120 |
|
---|
121 | extern Status XmbufGetVersion(
|
---|
122 | Display* /* dpy */,
|
---|
123 | int* /* major_version_return */,
|
---|
124 | int* /* minor_version_return */
|
---|
125 | );
|
---|
126 |
|
---|
127 | extern int XmbufCreateBuffers(
|
---|
128 | Display* /* dpy */,
|
---|
129 | Window /* w */,
|
---|
130 | int /* count */,
|
---|
131 | int /* update_action */,
|
---|
132 | int /* update_hint */,
|
---|
133 | Multibuffer* /* buffers */
|
---|
134 | );
|
---|
135 |
|
---|
136 | extern void XmbufDestroyBuffers(
|
---|
137 | Display* /* dpy */,
|
---|
138 | Window /* window */
|
---|
139 | );
|
---|
140 |
|
---|
141 | extern void XmbufDisplayBuffers(
|
---|
142 | Display* /* dpy */,
|
---|
143 | int /* count */,
|
---|
144 | Multibuffer* /* buffers */,
|
---|
145 | int /* min_delay */,
|
---|
146 | int /* max_delay */
|
---|
147 | );
|
---|
148 |
|
---|
149 | extern Status XmbufGetWindowAttributes(
|
---|
150 | Display* /* dpy */,
|
---|
151 | Window /* w */,
|
---|
152 | XmbufWindowAttributes* /* attr */
|
---|
153 | );
|
---|
154 |
|
---|
155 | extern void XmbufChangeWindowAttributes(
|
---|
156 | Display* /* dpy */,
|
---|
157 | Window /* w */,
|
---|
158 | unsigned long /* valuemask */,
|
---|
159 | XmbufSetWindowAttributes* /* attr */
|
---|
160 | );
|
---|
161 |
|
---|
162 | extern Status XmbufGetBufferAttributes(
|
---|
163 | Display* /* dpy */,
|
---|
164 | Multibuffer /* b */,
|
---|
165 | XmbufBufferAttributes* /* attr */
|
---|
166 | );
|
---|
167 |
|
---|
168 | extern void XmbufChangeBufferAttributes(
|
---|
169 | Display* /* dpy */,
|
---|
170 | Multibuffer /* b */,
|
---|
171 | unsigned long /* valuemask */,
|
---|
172 | XmbufSetBufferAttributes* /* attr */
|
---|
173 | );
|
---|
174 |
|
---|
175 | extern Status XmbufGetScreenInfo(
|
---|
176 | Display* /* dpy */,
|
---|
177 | Drawable /* d */,
|
---|
178 | int* /* nmono_return */,
|
---|
179 | XmbufBufferInfo** /* mono_info_return */,
|
---|
180 | int* /* nstereo_return */,
|
---|
181 | XmbufBufferInfo** /* stereo_info_return */
|
---|
182 | );
|
---|
183 |
|
---|
184 | extern Window XmbufCreateStereoWindow(
|
---|
185 | Display* /* dpy */,
|
---|
186 | Window /* parent */,
|
---|
187 | int /* x */,
|
---|
188 | int /* y */,
|
---|
189 | unsigned int /* width */,
|
---|
190 | unsigned int /* height */,
|
---|
191 | unsigned int /* border_width */,
|
---|
192 | int /* depth */,
|
---|
193 | unsigned int /* class */,
|
---|
194 | Visual* /* visual */,
|
---|
195 | unsigned long /* valuemask */,
|
---|
196 | XSetWindowAttributes* /* attr */,
|
---|
197 | Multibuffer* /* leftp */,
|
---|
198 | Multibuffer* /* rightp */
|
---|
199 | );
|
---|
200 |
|
---|
201 | extern void XmbufClearBufferArea(
|
---|
202 | Display* /* dpy */,
|
---|
203 | Multibuffer /* buffer */,
|
---|
204 | int /* x */,
|
---|
205 | int /* y */,
|
---|
206 | unsigned int /* width */,
|
---|
207 | unsigned int /* height */,
|
---|
208 | Bool /* exposures */
|
---|
209 | );
|
---|
210 |
|
---|
211 | _XFUNCPROTOEND
|
---|
212 |
|
---|
213 | #endif /* _MULTIBUF_H_ */
|
---|