aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl/classes/javax/media/opengl/GLDrawableFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jogl/classes/javax/media/opengl/GLDrawableFactory.java')
-rw-r--r--src/jogl/classes/javax/media/opengl/GLDrawableFactory.java32
1 files changed, 15 insertions, 17 deletions
diff --git a/src/jogl/classes/javax/media/opengl/GLDrawableFactory.java b/src/jogl/classes/javax/media/opengl/GLDrawableFactory.java
index 9bb9480c7..1282eb168 100644
--- a/src/jogl/classes/javax/media/opengl/GLDrawableFactory.java
+++ b/src/jogl/classes/javax/media/opengl/GLDrawableFactory.java
@@ -90,11 +90,13 @@ import javax.media.nativewindow.ProxySurface;
public abstract class GLDrawableFactory {
- private static final GLDrawableFactory eglFactory;
- private static final GLDrawableFactory nativeOSFactory;
private static final String nativeOSType;
static final String macosxFactoryClassNameCGL = "jogamp.opengl.macosx.cgl.MacOSXCGLDrawableFactory";
static final String macosxFactoryClassNameAWTCGL = "jogamp.opengl.macosx.cgl.awt.MacOSXAWTCGLDrawableFactory";
+
+ private static volatile boolean initialized = false;
+ private static GLDrawableFactory eglFactory;
+ private static GLDrawableFactory nativeOSFactory;
protected static ArrayList<GLDrawableFactory> glDrawableFactories = new ArrayList<GLDrawableFactory>();
@@ -106,15 +108,15 @@ public abstract class GLDrawableFactory {
* Instantiate singleton factories if available, EGLES1, EGLES2 and the OS native ones.
*/
static {
- AccessController.doPrivileged(new PrivilegedAction() {
- public Object run() {
- registerFactoryShutdownHook();
- return null;
- }
- });
-
nativeOSType = NativeWindowFactory.getNativeWindowType(true);
+ }
+ protected static final void initialize() {
+ if(initialized) { return; }
+ initialized = true;
+
+ registerFactoryShutdownHook();
+
GLDrawableFactory tmp = null;
String factoryClassName = Debug.getProperty("jogl.gldrawablefactory.class.name", true, AccessController.getContext());
ClassLoader cl = GLDrawableFactory.class.getClassLoader();
@@ -205,17 +207,13 @@ public abstract class GLDrawableFactory {
}
protected static void shutdown() {
- AccessController.doPrivileged(new PrivilegedAction() {
- public Object run() {
- unregisterFactoryShutdownHook();
- return null;
- }
- });
+ unregisterFactoryShutdownHook();
shutdownImpl();
+ eglFactory = null;
+ nativeOSFactory = null;
+ initialized = false;
}
- private AbstractGraphicsDevice defaultSharedDevice = null;
-
protected GLDrawableFactory() {
synchronized(glDrawableFactories) {
glDrawableFactories.add(this);