aboutsummaryrefslogtreecommitdiffstats
path: root/src/oculusvr/classes
diff options
context:
space:
mode:
Diffstat (limited to 'src/oculusvr/classes')
-rw-r--r--src/oculusvr/classes/jogamp/opengl/oculusvr/OVRStereoDevice.java11
-rw-r--r--src/oculusvr/classes/jogamp/opengl/oculusvr/OVRStereoDeviceFactory.java11
2 files changed, 19 insertions, 3 deletions
diff --git a/src/oculusvr/classes/jogamp/opengl/oculusvr/OVRStereoDevice.java b/src/oculusvr/classes/jogamp/opengl/oculusvr/OVRStereoDevice.java
index 2832012e4..f6dc8bf9f 100644
--- a/src/oculusvr/classes/jogamp/opengl/oculusvr/OVRStereoDevice.java
+++ b/src/oculusvr/classes/jogamp/opengl/oculusvr/OVRStereoDevice.java
@@ -41,6 +41,7 @@ import com.jogamp.oculusvr.ovrHmdDesc;
import com.jogamp.oculusvr.ovrSizei;
import com.jogamp.opengl.math.FovHVHalves;
import com.jogamp.opengl.util.stereo.StereoDevice;
+import com.jogamp.opengl.util.stereo.StereoDeviceFactory;
import com.jogamp.opengl.util.stereo.StereoDeviceRenderer;
import com.jogamp.opengl.util.stereo.StereoUtil;
@@ -48,6 +49,7 @@ public class OVRStereoDevice implements StereoDevice {
/** 1.6 up, 5 forward */
private static final float[] DEFAULT_EYE_POSITION_OFFSET = { 0.0f, 1.6f, -5.0f };
+ private final StereoDeviceFactory factory;
public final OvrHmdContext handle;
public final int deviceIndex;
public final ovrHmdDesc hmdDesc;
@@ -57,7 +59,11 @@ public class OVRStereoDevice implements StereoDevice {
private final int[] eyeRenderOrder;
private final int supportedDistortionBits, recommendedDistortionBits, minimumDistortionBits;
- public OVRStereoDevice(final OvrHmdContext nativeContext, final int deviceIndex) {
+ public OVRStereoDevice(final StereoDeviceFactory factory, final OvrHmdContext nativeContext, final int deviceIndex) {
+ if( null == nativeContext ) {
+ throw new IllegalArgumentException("Passed null nativeContext");
+ }
+ this.factory = factory;
this.handle = nativeContext;
this.deviceIndex = deviceIndex;
this.hmdDesc = ovrHmdDesc.create();
@@ -75,6 +81,9 @@ public class OVRStereoDevice implements StereoDevice {
}
@Override
+ public final StereoDeviceFactory getFactory() { return factory; }
+
+ @Override
public final String toString() {
final StringBuilder sb = new StringBuilder();
sb.append("OVRStereoDevice[product "+hmdDesc.getProductNameAsString());
diff --git a/src/oculusvr/classes/jogamp/opengl/oculusvr/OVRStereoDeviceFactory.java b/src/oculusvr/classes/jogamp/opengl/oculusvr/OVRStereoDeviceFactory.java
index b292c882d..06f716ddc 100644
--- a/src/oculusvr/classes/jogamp/opengl/oculusvr/OVRStereoDeviceFactory.java
+++ b/src/oculusvr/classes/jogamp/opengl/oculusvr/OVRStereoDeviceFactory.java
@@ -44,9 +44,16 @@ public class OVRStereoDeviceFactory extends StereoDeviceFactory {
}
@Override
- public final StereoDevice createDevice(final int deviceIndex, Config config, final boolean verbose) {
+ public final StereoDevice createDevice(final int deviceIndex, final Config config, final boolean verbose) {
final OvrHmdContext hmdCtx = OVR.ovrHmd_Create(deviceIndex);
- final OVRStereoDevice ctx = new OVRStereoDevice(hmdCtx, deviceIndex);
+ if( null == hmdCtx ) {
+ if( verbose ) {
+ System.err.println("Failed to create hmdCtx for device index "+deviceIndex+" on thread "+Thread.currentThread().getName());
+ Thread.dumpStack();
+ }
+ return null;
+ }
+ final OVRStereoDevice ctx = new OVRStereoDevice(this, hmdCtx, deviceIndex);
if( verbose ) {
System.err.println(OVRVersion.getAvailableCapabilitiesInfo(ctx.hmdDesc, deviceIndex, null).toString());
}