From 45be1e933f5a3e21b32dc1d1141b6261154faa31 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Tue, 22 Apr 2008 14:18:57 -0400 Subject: [PATCH] Prefer GLX visuals with stencil buffer for the default visual. --- GL/glx/glxscreens.c | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-) diff --git a/GL/glx/glxscreens.c b/GL/glx/glxscreens.c index 41ee029..5859de0 100644 --- a/GL/glx/glxscreens.c +++ b/GL/glx/glxscreens.c @@ -437,6 +437,7 @@ initGlxVisual(VisualPtr visual, __GLXconfig *config) typedef struct { GLboolean doubleBuffer; GLboolean depthBuffer; + GLboolean stencilBuffer; } FBConfigTemplateRec, *FBConfigTemplatePtr; static __GLXconfig * @@ -453,6 +454,8 @@ pickFBConfig(__GLXscreen *pGlxScreen, FBConfigTemplatePtr template, int class) continue; if ((config->depthBits > 0) != template->depthBuffer) continue; + if ((config->stencilBits > 0) != template->stencilBuffer) + continue; return config; } @@ -466,8 +469,9 @@ addMinimalSet(__GLXscreen *pGlxScreen) __GLXconfig *config; VisualPtr visuals; int i, j; - FBConfigTemplateRec best = { GL_TRUE, GL_TRUE }; - FBConfigTemplateRec minimal = { GL_FALSE, GL_FALSE }; + FBConfigTemplateRec best = { GL_TRUE, GL_TRUE, GL_TRUE }; + FBConfigTemplateRec good = { GL_TRUE, GL_TRUE, GL_FALSE }; + FBConfigTemplateRec minimal = { GL_FALSE, GL_FALSE, GL_FALSE }; pGlxScreen->visuals = xcalloc(pGlxScreen->pScreen->numVisuals, sizeof (__GLXconfig *)); @@ -480,8 +484,11 @@ addMinimalSet(__GLXscreen *pGlxScreen) for (i = 0, j = 0; i < pGlxScreen->pScreen->numVisuals; i++) { if (visuals[i].nplanes == 32) config = pickFBConfig(pGlxScreen, &minimal, visuals[i].class); - else + else { config = pickFBConfig(pGlxScreen, &best, visuals[i].class); + if (config == NULL) + config = pickFBConfig(pGlxScreen, &good, visuals[i].class); + } if (config == NULL) config = pGlxScreen->fbconfigs; if (config == NULL) -- 1.5.4.5