From bd9813bbf59c48f69a8767d3ad0d72a1830bb1ae Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Mon, 28 Mar 2016 12:00:40 -0700 Subject: [PATCH] Only enable the Oculus plugin in the presence of the 1.x runtime --- plugins/oculus/src/OculusBaseDisplayPlugin.h | 2 +- plugins/oculus/src/OculusControllerManager.h | 1 - plugins/oculus/src/OculusHelpers.cpp | 16 +++++++++++++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/plugins/oculus/src/OculusBaseDisplayPlugin.h b/plugins/oculus/src/OculusBaseDisplayPlugin.h index b5ec0769e0..41344335f3 100644 --- a/plugins/oculus/src/OculusBaseDisplayPlugin.h +++ b/plugins/oculus/src/OculusBaseDisplayPlugin.h @@ -28,7 +28,7 @@ protected: void internalDeactivate() override; protected: - ovrSession _session; + ovrSession _session { nullptr }; ovrGraphicsLuid _luid; ovrEyeRenderDesc _eyeRenderDescs[2]; ovrFovPort _eyeFovs[2]; diff --git a/plugins/oculus/src/OculusControllerManager.h b/plugins/oculus/src/OculusControllerManager.h index 7a30b19aa4..fb126ca2a8 100644 --- a/plugins/oculus/src/OculusControllerManager.h +++ b/plugins/oculus/src/OculusControllerManager.h @@ -42,7 +42,6 @@ private: friend class OculusControllerManager; }; - // Waiting on touch API class RemoteDevice : public OculusInputDevice { public: using Pointer = std::shared_ptr; diff --git a/plugins/oculus/src/OculusHelpers.cpp b/plugins/oculus/src/OculusHelpers.cpp index d38303919e..fdd35a06fe 100644 --- a/plugins/oculus/src/OculusHelpers.cpp +++ b/plugins/oculus/src/OculusHelpers.cpp @@ -9,7 +9,9 @@ #include "OculusHelpers.h" #include + #include +#include using Mutex = std::mutex; using Lock = std::unique_lock; @@ -38,9 +40,21 @@ void logFatal(const char* what) { qFatal(error.c_str()); } +static const QString GOOD_OCULUS_RUNTIME_FILE { "C:\\Program Files(x86)\\Oculus\\Support\\oculus - runtime\\LibOVRRT64_1.dll" }; + bool oculusAvailable() { ovrDetectResult detect = ovr_Detect(0); - return (detect.IsOculusServiceRunning && detect.IsOculusHMDConnected); + if (!detect.IsOculusServiceRunning || !detect.IsOculusHMDConnected) { + return false; + } + + // HACK Explicitly check for the presence of the 1.0 runtime DLL, and fail if it + // doesn't exist + if (!QFile(GOOD_OCULUS_RUNTIME_FILE).exists()) { + return false; + } + + return true; } ovrSession acquireOculusSession() {