summaryrefslogtreecommitdiff
path: root/xc/programs/Xserver/GL/glx/glxutil.c
diff options
context:
space:
mode:
Diffstat (limited to 'xc/programs/Xserver/GL/glx/glxutil.c')
-rw-r--r--xc/programs/Xserver/GL/glx/glxutil.c33
1 files changed, 22 insertions, 11 deletions
diff --git a/xc/programs/Xserver/GL/glx/glxutil.c b/xc/programs/Xserver/GL/glx/glxutil.c
index 7aafd0065..f66657246 100644
--- a/xc/programs/Xserver/GL/glx/glxutil.c
+++ b/xc/programs/Xserver/GL/glx/glxutil.c
@@ -44,6 +44,9 @@
#include "glxutil.h"
#include "glxbuf.h"
#include "GL/glx_ansic.h"
+#include "GL/internal/glcore.h"
+#include "GL/glxint.h"
+#include "glcontextmodes.h"
/************************************************************************/
@@ -219,8 +222,17 @@ __glXResizeDrawable(__GLdrawablePrivate *glPriv)
void
__glXFormatGLModes(__GLcontextModes *modes, __GLXvisualConfig *config)
{
+ /* FIXME: Use _gl_copy_visual_to_context_mode instead!
+ */
+
__glXMemset(modes, 0, sizeof(__GLcontextModes));
+ modes->visualID = config->vid;
+ modes->visualType = _gl_convert_from_x_visual_type( config->class );
+ modes->xRenderable = GL_TRUE;
+ modes->fbconfigID = GLX_DONT_CARE;
+ modes->drawableType = GLX_WINDOW_BIT;
+
modes->rgbMode = (config->rgba != 0);
modes->colorIndexMode = !(modes->rgbMode);
modes->doubleBufferMode = (config->doubleBuffer != 0);
@@ -257,8 +269,15 @@ __glXFormatGLModes(__GLcontextModes *modes, __GLXvisualConfig *config)
modes->stencilBits = config->stencilSize;
modes->numAuxBuffers = 0; /* XXX: should be picked up from the visual */
-
modes->level = config->level;
+
+ modes->visualRating = config->visualRating;
+ modes->transparentPixel = config->transparentPixel;
+ modes->transparentRed = config->transparentRed;
+ modes->transparentGreen = config->transparentGreen;
+ modes->transparentBlue = config->transparentBlue;
+ modes->transparentAlpha = config->transparentAlpha;
+ modes->transparentIndex = config->transparentIndex;
}
/*****************************************************************************/
@@ -382,21 +401,13 @@ __glXCreateDrawablePrivate(DrawablePtr pDraw, XID drawId,
pGlxScreen = &__glXActiveScreens[pDraw->pScreen->myNum];
- /* allocate the buffers */
if (glxPriv->type == DRAWABLE_WINDOW) {
- int i;
VisualID vid = wVisual((WindowPtr)pDraw);
- __GLXvisualConfig *pGlxVisual = pGlxScreen->pGlxVisual;
- for (i = 0; i < pGlxScreen->numVisuals; i++, pGlxVisual++) {
- if (pGlxVisual->vid == vid) {
- glxPriv->pGlxVisual = pGlxVisual;
- break;
- }
- }
+ glxPriv->modes = _gl_context_modes_find_visual( pGlxScreen->modes, vid );
__glXFBInitDrawable(glxPriv, modes);
} else {
- glxPriv->pGlxVisual = glxPriv->pGlxPixmap->pGlxVisual;
+ glxPriv->modes = glxPriv->pGlxPixmap->modes;
__glXPixInitDrawable(glxPriv, modes);
}