Add mouse and keyboard configuration file
[profile/ivi/xorg-x11-server.git] / glx / glxcontext.h
1 #ifdef HAVE_DIX_CONFIG_H
2 #include <dix-config.h>
3 #endif
4
5 #ifndef _GLX_context_h_
6 #define _GLX_context_h_
7
8 /*
9  * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
10  * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
11  *
12  * Permission is hereby granted, free of charge, to any person obtaining a
13  * copy of this software and associated documentation files (the "Software"),
14  * to deal in the Software without restriction, including without limitation
15  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
16  * and/or sell copies of the Software, and to permit persons to whom the
17  * Software is furnished to do so, subject to the following conditions:
18  *
19  * The above copyright notice including the dates of first publication and
20  * either this permission notice or a reference to
21  * http://oss.sgi.com/projects/FreeB/
22  * shall be included in all copies or substantial portions of the Software.
23  *
24  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
27  * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
28  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
29  * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30  * SOFTWARE.
31  *
32  * Except as contained in this notice, the name of Silicon Graphics, Inc.
33  * shall not be used in advertising or otherwise to promote the sale, use or
34  * other dealings in this Software without prior written authorization from
35  * Silicon Graphics, Inc.
36  */
37
38 typedef struct __GLXtextureFromPixmap __GLXtextureFromPixmap;
39 struct __GLXtextureFromPixmap {
40     int (*bindTexImage)         (__GLXcontext  *baseContext,
41                                  int            buffer,
42                                  __GLXdrawable *pixmap);
43     int (*releaseTexImage)      (__GLXcontext  *baseContext,
44                                  int            buffer,
45                                  __GLXdrawable *pixmap);
46 };
47
48
49 struct __GLXcontext {
50     void           (*destroy)       (__GLXcontext *context);
51     int            (*makeCurrent)   (__GLXcontext *context);
52     int            (*loseCurrent)   (__GLXcontext *context);
53     int            (*copy)          (__GLXcontext *dst,
54                                      __GLXcontext *src,
55                                      unsigned long mask);
56     int            (*forceCurrent)  (__GLXcontext *context);
57
58     Bool           (*wait)          (__GLXcontext *context,
59                                      __GLXclientState *cl,
60                                      int *error);
61
62     __GLXtextureFromPixmap *textureFromPixmap;
63
64     /*
65     ** list of context structs
66     */
67     __GLXcontext *last;
68     __GLXcontext *next;
69
70     /*
71     ** config struct for this context
72     */
73     __GLXconfig *config;
74
75     /*
76     ** Pointer to screen info data for this context.  This is set
77     ** when the context is created.
78     */
79     __GLXscreen *pGlxScreen;
80
81     /*
82     ** The XID of this context.
83     */
84     XID id;
85
86     /*
87     ** The XID of the shareList context.
88     */
89     XID share_id;
90
91     /*
92     ** Whether this context's ID still exists.
93     */
94     GLboolean idExists;
95     
96     /*
97     ** Whether this context is current for some client.
98     */
99     GLboolean isCurrent;
100     
101     /*
102     ** Whether this context is a direct rendering context.
103     */
104     GLboolean isDirect;
105
106     /*
107     ** This flag keeps track of whether there are unflushed GL commands.
108     */
109     GLboolean hasUnflushedCommands;
110     
111     /*
112     ** Current rendering mode for this context.
113     */
114     GLenum renderMode;
115     
116     /*
117     ** Buffers for feedback and selection.
118     */
119     GLfloat *feedbackBuf;
120     GLint feedbackBufSize;      /* number of elements allocated */
121     GLuint *selectBuf;
122     GLint selectBufSize;        /* number of elements allocated */
123
124     /*
125     ** The drawable private this context is bound to
126     */
127     __GLXdrawable *drawPriv;
128     __GLXdrawable *readPriv;
129 };
130
131 void __glXContextDestroy(__GLXcontext *context);
132
133 #endif /* !__GLX_context_h__ */