From 7c9189cfbe74c3e15574404b802e1054dec1685b Mon Sep 17 00:00:00 2001 From: Sam Gondelman Date: Thu, 23 Jul 2015 16:13:27 -0700 Subject: [PATCH] trying to fix init issue --- interface/src/Application.cpp | 3 +++ interface/src/InputPlugins.cpp | 5 +---- .../oculus/Oculus_0_5_DisplayPlugin.cpp | 16 +++++++++++----- .../oculus/Oculus_0_5_DisplayPlugin.h | 2 ++ .../src/input-plugins/SixenseManager.h | 6 +++--- 5 files changed, 20 insertions(+), 12 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index b4a285a680..4b6c4663d1 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -535,6 +535,9 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : container->setFocus(); container->installEventFilter(DependencyManager::get().data()); + // Necessary to call this here so Oculus can get inited before Sixense + getDisplayPlugins(); + // must be before initializeGL() _activeInputPlugins.clear(); auto inputPlugins = getInputPlugins(); diff --git a/interface/src/InputPlugins.cpp b/interface/src/InputPlugins.cpp index c0f6dcbf65..c99be26b8f 100644 --- a/interface/src/InputPlugins.cpp +++ b/interface/src/InputPlugins.cpp @@ -28,7 +28,7 @@ static void addInputPluginToMenu(InputPluginPointer inputPlugin, bool active = f } auto parent = menu->getMenu(MenuOption::InputMenu); auto action = menu->addCheckableActionToQMenuAndActionHash(parent, - name, 0, true, qApp, + name, 0, active, qApp, SLOT(updateInputModes())); inputPluginGroup->addAction(action); inputPluginGroup->setExclusive(false); @@ -45,10 +45,7 @@ const InputPluginList& getInputPlugins() { InputPlugin* PLUGIN_POOL[] = { new KeyboardMouseDevice(), new SDL2Manager(), - // Sixense is causing some sort of memory corruption on OSX -#ifndef Q_OS_MAC new SixenseManager(), -#endif new ViveControllerManager(), nullptr }; diff --git a/libraries/display-plugins/src/display-plugins/oculus/Oculus_0_5_DisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/oculus/Oculus_0_5_DisplayPlugin.cpp index a44e724981..48235be2a0 100644 --- a/libraries/display-plugins/src/display-plugins/oculus/Oculus_0_5_DisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/oculus/Oculus_0_5_DisplayPlugin.cpp @@ -47,7 +47,7 @@ bool Oculus_0_5_DisplayPlugin::isSupported() const { return result; } -void Oculus_0_5_DisplayPlugin::activate(PluginContainer * container) { +void Oculus_0_5_DisplayPlugin::init() { if (!OVR_SUCCESS(ovr_Initialize(nullptr))) { Q_ASSERT(false); qFatal("Failed to Initialize SDK"); @@ -57,6 +57,16 @@ void Oculus_0_5_DisplayPlugin::activate(PluginContainer * container) { qFatal("Failed to acquire HMD"); } +} + +void Oculus_0_5_DisplayPlugin::deinit() { + ovr_Shutdown(); + + ovrHmd_Destroy(_hmd); + _hmd = nullptr; +} + +void Oculus_0_5_DisplayPlugin::activate(PluginContainer * container) { OculusBaseDisplayPlugin::activate(container); _window->makeCurrent(); @@ -104,10 +114,6 @@ void Oculus_0_5_DisplayPlugin::deactivate(PluginContainer* container) { _hmdWindow = nullptr; OculusBaseDisplayPlugin::deactivate(container); - - ovrHmd_Destroy(_hmd); - _hmd = nullptr; - ovr_Shutdown(); } void Oculus_0_5_DisplayPlugin::preRender() { diff --git a/libraries/display-plugins/src/display-plugins/oculus/Oculus_0_5_DisplayPlugin.h b/libraries/display-plugins/src/display-plugins/oculus/Oculus_0_5_DisplayPlugin.h index e1594b2d1d..4cba780b34 100644 --- a/libraries/display-plugins/src/display-plugins/oculus/Oculus_0_5_DisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/oculus/Oculus_0_5_DisplayPlugin.h @@ -25,6 +25,8 @@ public: virtual bool isSupported() const override; virtual const QString & getName() const override; + virtual void init() override; + virtual void deinit() override; virtual void activate(PluginContainer * container) override; virtual void deactivate(PluginContainer* container) override; diff --git a/libraries/input-plugins/src/input-plugins/SixenseManager.h b/libraries/input-plugins/src/input-plugins/SixenseManager.h index 09166d4eb6..2b63aa4ebd 100644 --- a/libraries/input-plugins/src/input-plugins/SixenseManager.h +++ b/libraries/input-plugins/src/input-plugins/SixenseManager.h @@ -81,7 +81,9 @@ public: UserInputMapper::Input makeInput(unsigned int button, int index); UserInputMapper::Input makeInput(JoystickAxisChannel axis, int index); UserInputMapper::Input makeInput(JointChannel joint); - + + static const QString NAME; + public slots: void setFilter(bool filter); @@ -118,8 +120,6 @@ private: bool _hydrasConnected; bool _invertButtons = DEFAULT_INVERT_SIXENSE_MOUSE_BUTTONS; - - static const QString NAME; }; #endif // hifi_SixenseManager_h