aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl/classes
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2011-12-01 18:32:22 +0100
committerSven Gothel <[email protected]>2011-12-01 18:32:22 +0100
commit919aabb77250cb0e272dac228388592d08bf98f5 (patch)
tree75d276913d698976f35d9d59e638211e045e922b /src/jogl/classes
parent7bbe18e689d62650fbbe94eec841369b3f58aaa6 (diff)
GLContext fix shutdown(): Clear proc address tables and extension cache (GLContextImpl)
Diffstat (limited to 'src/jogl/classes')
-rw-r--r--src/jogl/classes/javax/media/opengl/GLContext.java9
-rw-r--r--src/jogl/classes/jogamp/opengl/GLContextImpl.java8
2 files changed, 12 insertions, 5 deletions
diff --git a/src/jogl/classes/javax/media/opengl/GLContext.java b/src/jogl/classes/javax/media/opengl/GLContext.java
index 31125af59..38c2d79e5 100644
--- a/src/jogl/classes/javax/media/opengl/GLContext.java
+++ b/src/jogl/classes/javax/media/opengl/GLContext.java
@@ -66,7 +66,8 @@ import jogamp.opengl.GLContextImpl;
abstraction provides a stable object which clients can use to
refer to a given context. */
public abstract class GLContext {
-
+ public static final boolean DEBUG = Debug.debug("GLContext");
+
/** Reflects property jogl.debug.DebugGL. If true, the debug pipeline is enabled at context creation. */
public final static boolean DEBUG_GL;
/** Reflects property jogl.debug.TraceGL. If true, the trace pipeline is enabled at context creation. */
@@ -792,16 +793,18 @@ public abstract class GLContext {
throw new InternalError("Already set: "+devKey);
}
deviceVersionsAvailableSet.add(devKey);
- if (GLContextImpl.DEBUG) {
+ if (DEBUG) {
System.err.println(getThreadName() + ": !!! createContextARB: SET mappedVersionsAvailableSet "+devKey);
// Thread.dumpStack();
}
}
}
+ /** clears the device/context mappings as well as the GL/GLX proc address tables. */
protected static void shutdown() {
deviceVersionAvailable.clear();
- deviceVersionsAvailableSet.clear();
+ deviceVersionsAvailableSet.clear();
+ GLContextImpl.shutdownImpl(); // well ..
}
/**
diff --git a/src/jogl/classes/jogamp/opengl/GLContextImpl.java b/src/jogl/classes/jogamp/opengl/GLContextImpl.java
index d43c2d99d..5ea1a9bac 100644
--- a/src/jogl/classes/jogamp/opengl/GLContextImpl.java
+++ b/src/jogl/classes/jogamp/opengl/GLContextImpl.java
@@ -69,8 +69,6 @@ import javax.media.opengl.GLPipelineFactory;
import javax.media.opengl.GLProfile;
public abstract class GLContextImpl extends GLContext {
- public static final boolean DEBUG = Debug.debug("GLContext");
-
// RecursiveLock maintains a queue of waiting Threads, ensuring the longest waiting thread will be notified at unlock.
protected RecursiveLock lock = LockFactory.createRecursiveLock();
@@ -113,6 +111,12 @@ public abstract class GLContextImpl extends GLContext {
mappedGLXProcAddress = new HashMap<String, ProcAddressTable>();
}
+ public static void shutdownImpl() {
+ mappedExtensionAvailabilityCache.clear();
+ mappedGLProcAddress.clear();
+ mappedGLXProcAddress.clear();
+ }
+
public GLContextImpl(GLDrawableImpl drawable, GLContext shareWith) {
super();