All pastes #105299 Raw Edit

Untitled

public c v1 · immutable
#105299 ·published 2006-07-29 15:22 UTC
rendered paste body
diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.cindex 486f7db..3e53d94 100644--- a/dlls/winex11.drv/opengl.c+++ b/dlls/winex11.drv/opengl.c@@ -622,38 +622,26 @@ BOOL X11DRV_SwapBuffers(X11DRV_PDEVICE * XVisualInfo *X11DRV_setup_opengl_visual( Display *display ) {     XVisualInfo *visual = NULL;-    /* In order to support OpenGL or D3D, we require a double-buffered visual and stencil buffer support, */-    int dblBuf[] = {GLX_RGBA,GLX_DEPTH_SIZE, 24, GLX_STENCIL_SIZE, 8, GLX_ALPHA_SIZE, 8, GLX_DOUBLEBUFFER, None};+    int cfgIndex;+    int cfgArray[][] = {+        { GLX_RGBA, GLX_DEPTH_SIZE, 32, GLX_STENCIL_SIZE, 8, GLX_ALPHA_SIZE, 8, GLX_DOUBLEBUFFER, None },+        { GLX_RGBA, GLX_DEPTH_SIZE, 24, GLX_STENCIL_SIZE, 8, GLX_ALPHA_SIZE, 8, GLX_DOUBLEBUFFER, None },+        { GLX_RGBA, GLX_DEPTH_SIZE, 16, GLX_STENCIL_SIZE, 8, GLX_DOUBLEBUFFER, None },+        { GLX_RGBA, GLX_DEPTH_SIZE, 16, GLX_DOUBLEBUFFER, None}+    };     if (!has_opengl()) return NULL;--    wine_tsx11_lock();-    visual = pglXChooseVisual(display, DefaultScreen(display), dblBuf);-    wine_tsx11_unlock();-    if (visual == NULL) {-        /* fallback to 16 bits depth, no alpha */-        int dblBuf2[] = {GLX_RGBA,GLX_DEPTH_SIZE, 16, GLX_STENCIL_SIZE, 8, GLX_DOUBLEBUFFER, None};-        WARN("Failed to get a visual with at least 24 bits depth\n");-++    for (cfgIndex = 1; cfgIndex < 4; ++cfgIndex) {         wine_tsx11_lock();-        visual = pglXChooseVisual(display, DefaultScreen(display), dblBuf2);+        visual = pglXChooseVisual(display, DefaultScreen(display), cfgArray[cfgIndex]);         wine_tsx11_unlock();-        if (visual == NULL) {-            /* fallback to no stencil */-            int dblBuf2[] = {GLX_RGBA,GLX_DEPTH_SIZE, 16, GLX_DOUBLEBUFFER, None};-            WARN("Failed to get a visual with at least 8 bits of stencil\n");--            wine_tsx11_lock();-            visual = pglXChooseVisual(display, DefaultScreen(display), dblBuf2);-            wine_tsx11_unlock();-            if (visual == NULL) {-                /* This should only happen if we cannot find a match with a depth size 16 */-                FIXME("Failed to find a suitable visual\n");-                return visual;-            }+        if (visual != NULL) {+            TRACE("Found visual at index %d, Visual ID %lx\n", cfgIndex, visual->visualid);+            return visual;         }     }-    TRACE("Visual ID %lx Chosen\n",visual->visualid);-    return visual;+    FIXME("Failed to find a suitable visual\n");+    return NULL; } #else  /* no OpenGL includes */