1 /******************************************************************************
2  *
3  * Copyright (c) 1994, 1995  Hewlett-Packard Company
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining
6  * a copy of this software and associated documentation files (the
7  * "Software"), to deal in the Software without restriction, including
8  * without limitation the rights to use, copy, modify, merge, publish,
9  * distribute, sublicense, and/or sell copies of the Software, and to
10  * permit persons to whom the Software is furnished to do so, subject to
11  * the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included
14  * in all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19  * IN NO EVENT SHALL HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY CLAIM,
20  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
21  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
22  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23  *
24  * Except as contained in this notice, the name of the Hewlett-Packard
25  * Company shall not be used in advertising or otherwise to promote the
26  * sale, use or other dealings in this Software without prior written
27  * authorization from the Hewlett-Packard Company.
28  *
29  *     Header file for Xlib-related DBE
30  *
31  *****************************************************************************/
32 
33 #ifndef XDBE_H
34 #define XDBE_H
35 
36 #include <X11/Xfuncproto.h>
37 #include <X11/extensions/dbe.h>
38 
39 typedef struct
40 {
41     VisualID    visual;    /* one visual ID that supports double-buffering */
42     int         depth;     /* depth of visual in bits                      */
43     int         perflevel; /* performance level of visual                  */
44 }
45 XdbeVisualInfo;
46 
47 typedef struct
48 {
49     int                 count;          /* number of items in visual_depth   */
50     XdbeVisualInfo      *visinfo;       /* list of visuals & depths for scrn */
51 }
52 XdbeScreenVisualInfo;
53 
54 
55 typedef Drawable XdbeBackBuffer;
56 
57 typedef unsigned char XdbeSwapAction;
58 
59 typedef struct
60 {
61     Window		swap_window;    /* window for which to swap buffers   */
62     XdbeSwapAction	swap_action;    /* swap action to use for swap_window */
63 }
64 XdbeSwapInfo;
65 
66 typedef struct
67 {
68     Window	window;			/* window that buffer belongs to */
69 }
70 XdbeBackBufferAttributes;
71 
72 typedef struct
73 {
74     int			type;
75     Display		*display;	/* display the event was read from */
76     XdbeBackBuffer	buffer;		/* resource id                     */
77     unsigned long	serial;		/* serial number of failed request */
78     unsigned char	error_code;	/* error base + XdbeBadBuffer      */
79     unsigned char	request_code;	/* major opcode of failed request  */
80     unsigned char	minor_code;	/* minor opcode of failed request  */
81 }
82 XdbeBufferError;
83 
84 /* _XFUNCPROTOBEGIN and _XFUNCPROTOEND are defined as noops
85  * (for non-C++ builds) in X11/Xfuncproto.h.
86  */
87 _XFUNCPROTOBEGIN
88 
89 extern Status XdbeQueryExtension(
90     Display*		/* dpy                  */,
91     int*		/* major_version_return */,
92     int*		/* minor_version_return */
93 );
94 
95 extern XdbeBackBuffer XdbeAllocateBackBufferName(
96     Display*		/* dpy         */,
97     Window		/* window      */,
98     XdbeSwapAction	/* swap_action */
99 );
100 
101 extern Status XdbeDeallocateBackBufferName(
102     Display*		/* dpy    */,
103     XdbeBackBuffer	/* buffer */
104 );
105 
106 extern Status XdbeSwapBuffers(
107     Display*		/* dpy         */,
108     XdbeSwapInfo*	/* swap_info   */,
109     int			/* num_windows */
110 );
111 
112 extern Status XdbeBeginIdiom(
113     Display*		/* dpy */
114 );
115 
116 extern Status XdbeEndIdiom(
117     Display*		/* dpy */
118 );
119 
120 extern XdbeScreenVisualInfo *XdbeGetVisualInfo(
121     Display*		/* dpy               */,
122     Drawable*		/* screen_specifiers */,
123     int*		/* num_screens       */
124 );
125 
126 extern void XdbeFreeVisualInfo(
127     XdbeScreenVisualInfo*	/* visual_info */
128 );
129 
130 extern XdbeBackBufferAttributes *XdbeGetBackBufferAttributes(
131     Display*		/* dpy    */,
132     XdbeBackBuffer	/* buffer */
133 );
134 
135 _XFUNCPROTOEND
136 
137 #endif /* XDBE_H */
138 
139