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_ */ 214