From 7d7b08a246a3173b204ecbb467f9d11d3f1c394f Mon Sep 17 00:00:00 2001 From: Sven Gothel <sgothel@jausoft.com> Date: Sat, 24 Sep 2011 02:57:47 +0200 Subject: JNILibLoaderBase: Add convenient method to addNativeJarLibs for 'all' and 'atomic' variants --- .../com/jogamp/common/jvm/JNILibLoaderBase.java | 39 +++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'src/java/com/jogamp/common/jvm/JNILibLoaderBase.java') diff --git a/src/java/com/jogamp/common/jvm/JNILibLoaderBase.java b/src/java/com/jogamp/common/jvm/JNILibLoaderBase.java index 348fb54..3164b82 100644 --- a/src/java/com/jogamp/common/jvm/JNILibLoaderBase.java +++ b/src/java/com/jogamp/common/jvm/JNILibLoaderBase.java @@ -140,6 +140,12 @@ public class JNILibLoaderBase { loaderAction = action; } + /** + * + * @param classFromJavaJar GLProfile + * @param nativeJarBaseName jogl-all + * @return + */ public static final boolean addNativeJarLibs(Class<?> classFromJavaJar, String nativeJarBaseName) { if(TempJarCache.isInitialized()) { final String nativeJarName = nativeJarBaseName+"-natives-"+Platform.getOSAndArch()+".jar"; @@ -164,7 +170,38 @@ public class JNILibLoaderBase { } return false; } - + + /** + * @param classFromJavaJar GLProfile + * @param allJavaJarPrefix "jogl.all" + * @param allNativeJarBaseName "jogl-all" + * @param atomicNativeJarBaseNames [ "nativewindow", "jogl", "newt" ] + */ + public static void addNativeJarLibs(Class<?> classFromJavaJar, String allJavaJarPrefix, String allNativeJarBaseName, String[] atomicNativeJarBaseNames) { + if(TempJarCache.isInitialized()) { + final ClassLoader cl = classFromJavaJar.getClassLoader(); + try { + final String jarName = JarUtil.getJarName(classFromJavaJar.getName(), cl); + if(jarName!=null) { + if( null != allJavaJarPrefix && jarName.startsWith(allJavaJarPrefix) ) { + // all-in-one variant + JNILibLoaderBase.addNativeJarLibs(classFromJavaJar, allNativeJarBaseName); + } else if(null != atomicNativeJarBaseNames) { + // atomic variant + for(int i=0; i<atomicNativeJarBaseNames.length; i++) { + final String atomicNativeJarBaseName = atomicNativeJarBaseNames[i]; + if(null != atomicNativeJarBaseName && atomicNativeJarBaseName.length()>0) { + JNILibLoaderBase.addNativeJarLibs(classFromJavaJar, atomicNativeJarBaseName); + } + } + } + } + } catch (IOException ioe) { + ioe.printStackTrace(); + } + } + } + protected static synchronized boolean loadLibrary(String libname, boolean ignoreError) { if (loaderAction != null) { return loaderAction.loadLibrary(libname, ignoreError); -- cgit v1.2.3