From 06e6496e0ffb5518044b62defc961d0ca8da721e Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 27 Apr 2008 13:01:14 +0000 Subject: [PATCH] use GLX_DOUBLEBUFFER if no attributes were specified with GLX >= 1.3 too git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53380 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/unix/glx11.cpp | 45 ++++++++++++++++++--------------------------- 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/src/unix/glx11.cpp b/src/unix/glx11.cpp index 780029891d..84fd0d441e 100644 --- a/src/unix/glx11.cpp +++ b/src/unix/glx11.cpp @@ -129,26 +129,26 @@ wxGLCanvasX11::ConvertWXAttrsToGL(const int *wxattrs, int *glattrs, size_t n) if ( !wxattrs ) { - if ( GetGLXVersion() >= 13 ) - { - // leave GLX >= 1.3 choose the default attributes - glattrs[0] = None; - } - else // GLX < 1.3 + size_t i = 0; + + // use double-buffered true colour by default + glattrs[i++] = GLX_RGBA; glattrs[i++] = True; + glattrs[i++] = GLX_DOUBLEBUFFER; glattrs[i++] = True; + + if ( GetGLXVersion() < 13 ) { // default settings if attriblist = 0 - size_t i = 0; - glattrs[i++] = GLX_RGBA; - glattrs[i++] = GLX_DOUBLEBUFFER; glattrs[i++] = GLX_DEPTH_SIZE; glattrs[i++] = 1; glattrs[i++] = GLX_RED_SIZE; glattrs[i++] = 1; glattrs[i++] = GLX_GREEN_SIZE; glattrs[i++] = 1; glattrs[i++] = GLX_BLUE_SIZE; glattrs[i++] = 1; glattrs[i++] = GLX_ALPHA_SIZE; glattrs[i++] = 0; - glattrs[i++] = None; - - wxASSERT_MSG( i < n, _T("GL attributes buffer too small") ); } + //else: recent GLX can choose the defaults on its own just fine + + glattrs[i] = None; + + wxASSERT_MSG( i < n, _T("GL attributes buffer too small") ); } else // have non-default attributes { @@ -158,25 +158,11 @@ wxGLCanvasX11::ConvertWXAttrsToGL(const int *wxattrs, int *glattrs, size_t n) // check if we have any space left, knowing that we may insert 2 // more elements during this loop iteration and we always need to // terminate the list with None (hence -3) - if ( p >= n - 2 ) + if ( p > n - 3 ) return false; switch ( wxattrs[arg++] ) { - case WX_GL_RGBA: - // for GLX >= 1.3, GLX_RGBA is useless and apparently - // harmful for some implementations - // - // FIXME: is this true? - if ( GetGLXVersion() <= 12 ) - { - glattrs[p++] = GLX_RGBA; - } - - // use "continue" to skip the assignment of the attribute - // value at the end of the loop - continue; - case WX_GL_BUFFER_SIZE: glattrs[p++] = GLX_BUFFER_SIZE; break; @@ -190,6 +176,11 @@ wxGLCanvasX11::ConvertWXAttrsToGL(const int *wxattrs, int *glattrs, size_t n) // OpenGL, so do put them into glattrs and also skip the // copy of wx value after switch by using "continue" // instead of "break" + case WX_GL_RGBA: + glattrs[p++] = GLX_RGBA; + glattrs[p++] = True; + continue; + case WX_GL_DOUBLEBUFFER: glattrs[p++] = GLX_DOUBLEBUFFER; glattrs[p++] = True; -- 2.45.2