summaryrefslogtreecommitdiffstats
path: root/src/com/jogamp/opencl/JOCLJNILibLoader.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/jogamp/opencl/JOCLJNILibLoader.java')
-rw-r--r--src/com/jogamp/opencl/JOCLJNILibLoader.java18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/com/jogamp/opencl/JOCLJNILibLoader.java b/src/com/jogamp/opencl/JOCLJNILibLoader.java
index 4ee99f1a..328c2237 100644
--- a/src/com/jogamp/opencl/JOCLJNILibLoader.java
+++ b/src/com/jogamp/opencl/JOCLJNILibLoader.java
@@ -28,8 +28,13 @@
package com.jogamp.opencl;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
import com.jogamp.common.jvm.JNILibLoaderBase;
import com.jogamp.common.os.NativeLibrary;
+import com.jogamp.common.os.Platform;
+import com.jogamp.common.util.cache.TempJarCache;
/**
@@ -43,7 +48,16 @@ class JOCLJNILibLoader extends JNILibLoaderBase {
* @return Returns libOpenCL represented as NativeLibrary.
*/
static NativeLibrary loadOpenCL() {
- loadLibrary("jocl", null, false);
- return NativeLibrary.open("OpenCL", JOCLJNILibLoader.class.getClassLoader());
+ return AccessController.doPrivileged(new PrivilegedAction<NativeLibrary>() {
+ public NativeLibrary run() {
+ Platform.initSingleton();
+ final String libName = "jocl";
+ if(TempJarCache.isInitialized() && null == TempJarCache.findLibrary(libName)) {
+ addNativeJarLibs(JOCLJNILibLoader.class, "jocl", null );
+ }
+ loadLibrary(libName, false);
+ return NativeLibrary.open("OpenCL", JOCLJNILibLoader.class.getClassLoader());
+ }
+ });
}
}