diff options
author | Martin Hegedus <[email protected]> | 2013-04-02 09:31:41 -0700 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2013-04-15 15:46:47 +0200 |
commit | 5b47372590ec715647ebbd75d70c41ec7a64485a (patch) | |
tree | 662ebf0af203cf10a48f66cb9777cf8e9400da6b /src/jogl/classes/jogamp/opengl/GLContextImpl.java | |
parent | 9104faa11c256cbe8687122bba3c54dbb398b4e0 (diff) |
Fix Bug 705 - Make Mesa X11 driver < 8.0 use new Quirk DontCloseX11DisplayConnection
Diffstat (limited to 'src/jogl/classes/jogamp/opengl/GLContextImpl.java')
-rw-r--r-- | src/jogl/classes/jogamp/opengl/GLContextImpl.java | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/jogl/classes/jogamp/opengl/GLContextImpl.java b/src/jogl/classes/jogamp/opengl/GLContextImpl.java index 9f7c9cf57..74bc59c7c 100644 --- a/src/jogl/classes/jogamp/opengl/GLContextImpl.java +++ b/src/jogl/classes/jogamp/opengl/GLContextImpl.java @@ -1562,9 +1562,41 @@ public abstract class GLContextImpl extends GLContext { quirks[i++] = quirk; } } + + // + // Mesa RENDERER related quirks + // + if( glRendererLowerCase.contains("mesa") ) { + // Added March 30, 2013 + // Martin C. Hegedus + if ( glRendererLowerCase.contains("x11") && getMesaMajorVersion(glVersion) < 8.0 ) { + final int quirk = GLRendererQuirks.DontCloseX11DisplayConnection; + if(DEBUG) { + System.err.println("Quirk: "+GLRendererQuirks.toString(quirk)+": cause: Mesa X11 < 8 : Renderer=" + glRenderer + ", Version=" +glVersion); + } + quirks[i++] = quirk; + } + } glRendererQuirks = new GLRendererQuirks(quirks, 0, i); } + + // Added by Martin C. Hegedus, March 30, 2013 + private static final int getMesaMajorVersion(String version) { + if (version == null || version.length() <= 0) return -1; + String[] strings = version.trim().split("\\s+"); + if (strings.length <= 0) return -1; + version = strings[strings.length-1]; + int index = version.indexOf("."); + if (index == 0) return -1; + if (index != -1) version = version.substring(0,index); + try { + Integer iNumber = new Integer(version); + return (iNumber == null) ? -1 : iNumber.intValue(); + } catch (Throwable t) { + return -1; + } + } private static final boolean hasFBOImpl(int major, int ctp, ExtensionAvailabilityCache extCache) { |