diff options
Diffstat (limited to 'xc/programs/Xserver/GL/glx/glxutil.c')
-rw-r--r-- | xc/programs/Xserver/GL/glx/glxutil.c | 33 |
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); } |