summaryrefslogtreecommitdiffstats
path: root/src/jogl/classes
diff options
context:
space:
mode:
Diffstat (limited to 'src/jogl/classes')
-rw-r--r--src/jogl/classes/javax/media/opengl/GLProfile.java37
1 files changed, 34 insertions, 3 deletions
diff --git a/src/jogl/classes/javax/media/opengl/GLProfile.java b/src/jogl/classes/javax/media/opengl/GLProfile.java
index a7231efc8..f76ad5d24 100644
--- a/src/jogl/classes/javax/media/opengl/GLProfile.java
+++ b/src/jogl/classes/javax/media/opengl/GLProfile.java
@@ -43,9 +43,13 @@ import jogamp.opengl.GLDynamicLookupHelper;
import jogamp.opengl.DesktopGLDynamicLookupHelper;
import com.jogamp.common.GlueGenVersion;
-import com.jogamp.common.jvm.JVMUtil;
+import com.jogamp.common.jvm.JNILibLoaderBase;
+import com.jogamp.common.os.Platform;
+import com.jogamp.common.util.IOUtil;
+import com.jogamp.common.util.JarUtil;
import com.jogamp.common.util.ReflectionUtil;
import com.jogamp.common.util.VersionUtil;
+import com.jogamp.common.util.cache.TempJarCache;
import com.jogamp.nativewindow.NativeWindowVersion;
import com.jogamp.opengl.JoglVersion;
@@ -53,6 +57,7 @@ import javax.media.nativewindow.AbstractGraphicsDevice;
import javax.media.nativewindow.NativeWindowFactory;
import javax.media.opengl.fixedfunc.GLPointerFunc;
+import java.io.IOException;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.HashMap;
@@ -107,8 +112,34 @@ public class GLProfile {
initialized = true;
// run the whole static initialization privileged to speed up,
// since this skips checking further access
- AccessController.doPrivileged(new PrivilegedAction() {
+ AccessController.doPrivileged(new PrivilegedAction<Object>() {
public Object run() {
+ if(TempJarCache.isInitialized()) {
+ final Class<?> c = GLProfile.class;
+ final ClassLoader cl = c.getClassLoader();
+ try {
+ final String jarName = JarUtil.getJarName(c.getName(), cl);
+ if(DEBUG) {
+ System.err.println("GLProfile classURL: "+IOUtil.getClassURL(c.getName(), cl));
+ System.err.println("GLProfile jarName: "+jarName);
+ }
+ if(jarName!=null) {
+ if( jarName.startsWith("jogl.all") ) {
+ // all-in-one variant
+ JNILibLoaderBase.addNativeJarLibs(c, "jogl-all");
+ } else {
+ // atomic variant
+ JNILibLoaderBase.addNativeJarLibs(c, "nativewindow");
+ JNILibLoaderBase.addNativeJarLibs(c, "jogl");
+ if( ReflectionUtil.isClassAvailable("com.jogamp.newt.NewtFactory", cl) ) {
+ JNILibLoaderBase.addNativeJarLibs(c, "newt");
+ }
+ }
+ }
+ } catch (IOException ioe) {
+ ioe.printStackTrace();
+ }
+ }
initProfilesForDefaultDevices(firstUIActionOnProcess);
return null;
}
@@ -1142,7 +1173,7 @@ public class GLProfile {
}
static {
- JVMUtil.initSingleton();
+ Platform.initSingleton();
}
private static /*final*/ boolean isAWTAvailable;