Home | History | Annotate | Download | only in extensions
      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