diff options
author | Sven Gothel <[email protected]> | 2014-06-25 12:58:13 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2014-06-25 12:58:13 +0200 |
commit | 08649aec02bae161423871c9bb3ec9a011e91088 (patch) | |
tree | 1b0e6f1bb13644bfd5b885ef1231a8d992ea9594 /make/config/oculusvr | |
parent | 008b3512be183cefc82e051b36c7a74d53c4906d (diff) |
Bug 1021: OVR GlueGen Mapping: Handle non-existent native oculusvr lib gracefully
- query isAvailable() in ovr_Initialize(), ovrHmd_Create(..) and ovrHmd_CreateDebug(..)
and return appropriate values.
Diffstat (limited to 'make/config/oculusvr')
-rw-r--r-- | make/config/oculusvr/oculusvr-common.cfg | 4 | ||||
-rw-r--r-- | make/config/oculusvr/oculusvr-ovr-CustomJavaCode.java | 51 |
2 files changed, 35 insertions, 20 deletions
diff --git a/make/config/oculusvr/oculusvr-common.cfg b/make/config/oculusvr/oculusvr-common.cfg index eb01cf067..24f535d45 100644 --- a/make/config/oculusvr/oculusvr-common.cfg +++ b/make/config/oculusvr/oculusvr-common.cfg @@ -42,6 +42,10 @@ ReturnedArrayLength ovrDistortionMesh.pIndexData getIndexCount() ReturnValueCapacity ovrHmd_Create sizeof(ovrHmd) ReturnValueCapacity ovrHmd_CreateDebug sizeof(ovrHmd) +JavaPrologue ovr_Initialize if( !isAvailable() ) { return false; } +JavaPrologue ovrHmd_Create if( !isAvailable() ) { return null; } +JavaPrologue ovrHmd_CreateDebug if( !isAvailable() ) { return null; } + ArgumentIsString ovrHmd_GetFloat 1 ArgumentIsString ovrHmd_SetFloat 1 ArgumentIsString ovrHmd_GetFloatArray 1 diff --git a/make/config/oculusvr/oculusvr-ovr-CustomJavaCode.java b/make/config/oculusvr/oculusvr-ovr-CustomJavaCode.java index 06f7b3234..281610a20 100644 --- a/make/config/oculusvr/oculusvr-ovr-CustomJavaCode.java +++ b/make/config/oculusvr/oculusvr-ovr-CustomJavaCode.java @@ -1,22 +1,33 @@ -static { - AccessController.doPrivileged(new PrivilegedAction<DynamicLibraryBundle>() { - public DynamicLibraryBundle run() { - final DynamicLibraryBundle bundle = new DynamicLibraryBundle(new OVRDynamicLibraryBundleInfo()); - if(null==bundle) { - throw new RuntimeException("Null DynamicLibraryBundle"); - } - /** No native tool library to load - if(!bundle.isToolLibLoaded()) { - throw new RuntimeException("Couln't load native OVR library"); - } */ - if(!bundle.isLibComplete()) { - throw new RuntimeException("Couln't load native OVR/JNI glue library"); - } - if( !initializeImpl() ) { - throw new RuntimeException("Initialization failure"); - } - return bundle; - } } ); -} + static final DynamicLibraryBundle dynamicLookupHelper; + + static { + dynamicLookupHelper = AccessController.doPrivileged(new PrivilegedAction<DynamicLibraryBundle>() { + public DynamicLibraryBundle run() { + final DynamicLibraryBundle bundle = new DynamicLibraryBundle(new OVRDynamicLibraryBundleInfo()); + if(null==bundle) { + throw new RuntimeException("Null DynamicLibraryBundle"); + } + /** No native tool library to load + if(!bundle.isToolLibLoaded()) { + System.err.println("Couln't load native OVR/JNI glue library"); + return null; + } */ + if(!bundle.isLibComplete()) { + System.err.println("Couln't load native OVR/JNI glue library"); + return null; + } + if( !initializeImpl() ) { + System.err.println("Native initialization failure of OVR/JNI glue library"); + return null; + } + return bundle; + } } ); + } + + /** + * Accessor. + * @returns true if OVR library is available on this machine. + */ + public static boolean isAvailable() { return dynamicLookupHelper != null; } |