aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/ExtensionAvailabilityCache.java27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/ExtensionAvailabilityCache.java b/src/jogl/classes/com/jogamp/opengl/impl/ExtensionAvailabilityCache.java
index 3da04e004..0cc79293e 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/ExtensionAvailabilityCache.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/ExtensionAvailabilityCache.java
@@ -49,7 +49,7 @@ import java.util.*;
* and display.
*/
public final class ExtensionAvailabilityCache {
- private static final boolean DEBUG = GLContextImpl.DEBUG;
+ protected static final boolean DEBUG = GLContextImpl.DEBUG;
private static final boolean DEBUG_AVAILABILITY = Debug.isPropertyDefined("jogl.debug.ExtensionAvailabilityCache", true);
ExtensionAvailabilityCache(GLContextImpl context)
@@ -106,7 +106,7 @@ public final class ExtensionAvailabilityCache {
// of extensions that are in the GL_EXTENSIONS string
if (availableExtensionCache.isEmpty() || !initialized) {
if (DEBUG) {
- System.err.println(context.getThreadName() + ":ExtensionAvailabilityCache: Pre-caching init "+gl+", OpenGL "+context.getGLVersion());
+ System.err.println(getThreadName() + ":ExtensionAvailabilityCache: Pre-caching init "+gl+", OpenGL "+context.getGLVersion());
}
boolean useGetStringi = false;
@@ -124,7 +124,7 @@ public final class ExtensionAvailabilityCache {
}
if (DEBUG) {
- System.err.println(context.getThreadName() + ":ExtensionAvailabilityCache: Pre-caching extension availability OpenGL "+context.getGLVersion()+
+ System.err.println(getThreadName() + ":ExtensionAvailabilityCache: Pre-caching extension availability OpenGL "+context.getGLVersion()+
", use "+ ( useGetStringi ? "glGetStringi" : "glGetString" ) );
}
@@ -140,9 +140,14 @@ public final class ExtensionAvailabilityCache {
}
}
if (DEBUG) {
- System.err.println(context.getThreadName() + ":ExtensionAvailabilityCache: GL_EXTENSIONS: "+numExtensions[0]);
+ System.err.println(getThreadName() + ":ExtensionAvailabilityCache: GL_EXTENSIONS: "+numExtensions[0]);
}
- } else {
+ if(0==numExtensions[0]) {
+ // fall back ..
+ useGetStringi=false;
+ }
+ }
+ if(!useGetStringi) {
sb.append(gl.glGetString(GL.GL_EXTENSIONS));
}
glExtensions = sb.toString();
@@ -153,7 +158,7 @@ public final class ExtensionAvailabilityCache {
String allAvailableExtensions = sb.toString();
if (DEBUG_AVAILABILITY) {
- System.err.println(context.getThreadName() + ":ExtensionAvailabilityCache: GL vendor: " + gl.glGetString(GL.GL_VENDOR));
+ System.err.println(getThreadName() + ":ExtensionAvailabilityCache: GL vendor: " + gl.glGetString(GL.GL_VENDOR));
}
StringTokenizer tok = new StringTokenizer(allAvailableExtensions);
while (tok.hasMoreTokens()) {
@@ -161,11 +166,11 @@ public final class ExtensionAvailabilityCache {
availableExt = availableExt.intern();
availableExtensionCache.add(availableExt);
if (DEBUG_AVAILABILITY) {
- System.err.println(context.getThreadName() + ":ExtensionAvailabilityCache: Available: " + availableExt);
+ System.err.println(getThreadName() + ":ExtensionAvailabilityCache: Available: " + availableExt);
}
}
if (DEBUG) {
- System.err.println(context.getThreadName() + ":ExtensionAvailabilityCache: ALL EXTENSIONS: "+availableExtensionCache.size());
+ System.err.println(getThreadName() + ":ExtensionAvailabilityCache: ALL EXTENSIONS: "+availableExtensionCache.size());
}
int major[] = new int[] { context.getGLVersionMajor() };
@@ -173,7 +178,7 @@ public final class ExtensionAvailabilityCache {
while (GLContext.isValidGLVersion(major[0], minor[0])) {
availableExtensionCache.add("GL_VERSION_" + major[0] + "_" + minor[0]);
if (DEBUG) {
- System.err.println(context.getThreadName() + ":ExtensionAvailabilityCache: Added GL_VERSION_" + major[0] + "_" + minor[0] + " to known extensions");
+ System.err.println(getThreadName() + ":ExtensionAvailabilityCache: Added GL_VERSION_" + major[0] + "_" + minor[0] + " to known extensions");
}
if(!GLContext.decrementGLVersion(major, minor)) break;
}
@@ -206,4 +211,8 @@ public final class ExtensionAvailabilityCache {
private HashSet availableExtensionCache = new HashSet(50);
private GLContextImpl context;
+ protected static String getThreadName() {
+ return Thread.currentThread().getName();
+ }
+
}