diff --git a/plugins/oculus/src/OculusDisplayPlugin.cpp b/plugins/oculus/src/OculusDisplayPlugin.cpp index b5f4d79042..415965e948 100644 --- a/plugins/oculus/src/OculusDisplayPlugin.cpp +++ b/plugins/oculus/src/OculusDisplayPlugin.cpp @@ -59,13 +59,15 @@ void OculusDisplayPlugin::customizeContext() { ovrResult result = ovr_CreateTextureSwapChainGL(_session, &desc, &_textureSwapChain); if (!OVR_SUCCESS(result)) { - logFatal("Failed to create swap textures"); + logCritical("Failed to create swap textures"); + return; } int length = 0; result = ovr_GetTextureSwapChainLength(_session, _textureSwapChain, &length); if (!OVR_SUCCESS(result) || !length) { - qFatal("Unable to count swap chain textures"); + logCritical("Unable to count swap chain textures"); + return; } for (int i = 0; i < length; ++i) { GLuint chainTexId; @@ -83,6 +85,7 @@ void OculusDisplayPlugin::customizeContext() { _sceneLayer.ColorTexture[0] = _textureSwapChain; // not needed since the structure was zeroed on init, but explicit _sceneLayer.ColorTexture[1] = nullptr; + _customized = true; } void OculusDisplayPlugin::uncustomizeContext() { @@ -98,10 +101,14 @@ void OculusDisplayPlugin::uncustomizeContext() { ovr_DestroyTextureSwapChain(_session, _textureSwapChain); _textureSwapChain = nullptr; _outputFramebuffer.reset(); + _customized = false; Parent::uncustomizeContext(); } void OculusDisplayPlugin::hmdPresent() { + if (!_customized) { + return; + } PROFILE_RANGE_EX(__FUNCTION__, 0xff00ff00, (uint64_t)_currentFrame->frameIndex) diff --git a/plugins/oculus/src/OculusDisplayPlugin.h b/plugins/oculus/src/OculusDisplayPlugin.h index 4d10fd38a5..0c7d57c4f4 100644 --- a/plugins/oculus/src/OculusDisplayPlugin.h +++ b/plugins/oculus/src/OculusDisplayPlugin.h @@ -32,5 +32,6 @@ private: static const QString NAME; ovrTextureSwapChain _textureSwapChain; gpu::FramebufferPointer _outputFramebuffer; + bool _customized { false }; }; diff --git a/plugins/oculus/src/OculusHelpers.cpp b/plugins/oculus/src/OculusHelpers.cpp index 80390fd538..5fbc0db7d1 100644 --- a/plugins/oculus/src/OculusHelpers.cpp +++ b/plugins/oculus/src/OculusHelpers.cpp @@ -39,12 +39,12 @@ void logWarning(const char* what) { qWarning(oculus) << what << ":" << getError().ErrorString; } -void logFatal(const char* what) { +void logCritical(const char* what) { std::string error("[oculus] "); error += what; error += ": "; error += getError().ErrorString; - qFatal(error.c_str()); + qCritical(error.c_str()); } diff --git a/plugins/oculus/src/OculusHelpers.h b/plugins/oculus/src/OculusHelpers.h index ba0547ae0a..e55dde1034 100644 --- a/plugins/oculus/src/OculusHelpers.h +++ b/plugins/oculus/src/OculusHelpers.h @@ -15,7 +15,7 @@ #include void logWarning(const char* what); -void logFatal(const char* what); +void logCritical(const char* what); bool oculusAvailable(); ovrSession acquireOculusSession(); void releaseOculusSession();