diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 2db440291d..2135014ca4 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -800,6 +800,10 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { if (auto steamClient = pluginManager->getSteamClientPlugin()) { steamClient->init(); } + if (auto oculusPlatform = pluginManager->getOculusPlatformPlugin()) { + oculusPlatform->init(); + } + PROFILE_SET_THREAD_NAME("Main Thread"); #if defined(Q_OS_WIN) @@ -2667,6 +2671,10 @@ Application::~Application() { steamClient->shutdown(); } + if (auto oculusPlatform = PluginManager::getInstance()->getOculusPlatformPlugin()) { + oculusPlatform->shutdown(); + } + DependencyManager::destroy(); DependencyManager::destroy(); // must be destroyed before the FramebufferCache diff --git a/libraries/plugins/src/plugins/OculusPlatformPlugin.h b/libraries/plugins/src/plugins/OculusPlatformPlugin.h index 93bf534c6e..d5e54f30f1 100644 --- a/libraries/plugins/src/plugins/OculusPlatformPlugin.h +++ b/libraries/plugins/src/plugins/OculusPlatformPlugin.h @@ -20,6 +20,9 @@ public: virtual QString getName() const = 0; virtual QString getOculusUserID() const = 0; + virtual bool init() = 0; + virtual void shutdown() = 0; + virtual bool isRunning() const = 0; virtual void requestNonceAndUserID(NonceUserIDCallback callback) = 0; diff --git a/plugins/oculus/src/OculusPlatformPlugin.cpp b/plugins/oculus/src/OculusPlatformPlugin.cpp index 52bb167acf..1fbf08d0bd 100644 --- a/plugins/oculus/src/OculusPlatformPlugin.cpp +++ b/plugins/oculus/src/OculusPlatformPlugin.cpp @@ -17,13 +17,18 @@ QString OculusAPIPlugin::NAME { "Oculus Rift" }; OculusAPIPlugin::OculusAPIPlugin() { - if (hifi::ovr::available()) { - _session = hifi::ovr::acquireRenderSession(); - } } OculusAPIPlugin::~OculusAPIPlugin() { - if (hifi::ovr::available() && isRunning()) { +} + +bool OculusAPIPlugin::init() { + _session = hifi::ovr::acquireRenderSession(); + return _session; +} + +void OculusAPIPlugin::shutdown() { + if (isRunning()) { hifi::ovr::releaseRenderSession(_session); } } diff --git a/plugins/oculus/src/OculusPlatformPlugin.h b/plugins/oculus/src/OculusPlatformPlugin.h index 3d80540419..fd4f9763e3 100644 --- a/plugins/oculus/src/OculusPlatformPlugin.h +++ b/plugins/oculus/src/OculusPlatformPlugin.h @@ -23,6 +23,10 @@ public: bool isRunning() const; + bool init(); + + void shutdown(); + virtual void requestNonceAndUserID(NonceUserIDCallback callback); virtual void handleOVREvents();