From e3bc4b3b891db089add219ac9efcc3c88ed3c6f8 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 21 Jul 2015 13:45:33 -0700 Subject: [PATCH 1/8] working on plugin menu manipulation --- interface/src/Application.cpp | 29 ++++++++++++++++--- interface/src/Application.h | 5 ++++ interface/src/Menu.cpp | 9 ------ interface/src/Menu.h | 2 -- .../src/display-plugins/NullDisplayPlugin.cpp | 2 +- .../src/display-plugins/NullDisplayPlugin.h | 2 +- .../display-plugins/OpenGLDisplayPlugin.cpp | 2 +- .../src/display-plugins/OpenGLDisplayPlugin.h | 4 +-- .../WindowOpenGLDisplayPlugin.cpp | 4 +-- .../WindowOpenGLDisplayPlugin.h | 2 +- .../oculus/Oculus_0_5_DisplayPlugin.cpp | 4 +-- .../oculus/Oculus_0_5_DisplayPlugin.h | 2 +- .../oculus/Oculus_0_6_DisplayPlugin.cpp | 4 +-- .../oculus/Oculus_0_6_DisplayPlugin.h | 2 +- .../openvr/OpenVrDisplayPlugin.cpp | 2 +- .../openvr/OpenVrDisplayPlugin.h | 2 +- .../src/input-plugins/KeyboardMouseDevice.h | 2 +- .../src/input-plugins/SDL2Manager.h | 2 +- .../src/input-plugins/SixenseManager.cpp | 24 +++++++++++++-- .../src/input-plugins/SixenseManager.h | 3 +- .../input-plugins/ViveControllerManager.cpp | 2 +- .../src/input-plugins/ViveControllerManager.h | 2 +- libraries/plugins/src/plugins/Plugin.h | 4 +-- .../plugins/src/plugins/PluginContainer.h | 5 ++++ tests/ui/src/main.cpp | 1 - 25 files changed, 80 insertions(+), 42 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 2b05b398f1..8565f5f3cf 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -144,6 +144,7 @@ #include "ui/AddressBarDialog.h" #include "ui/UpdateDialog.h" +#include // ON WIndows PC, NVidia Optimus laptop, we want to enable NVIDIA GPU #if defined(Q_OS_WIN) @@ -754,14 +755,14 @@ Application::~Application() { ModelEntityItem::cleanupLoadedAnimations(); - getActiveDisplayPlugin()->deactivate(); + getActiveDisplayPlugin()->deactivate(this); auto inputPlugins = getInputPlugins(); foreach(auto inputPlugin, inputPlugins) { QString name = inputPlugin->getName(); QAction* action = Menu::getInstance()->getActionForOption(name); if (action->isChecked()) { - inputPlugin->deactivate(); + inputPlugin->deactivate(this); } } @@ -4806,7 +4807,7 @@ void Application::updateDisplayMode() { _displayPlugin = newDisplayPlugin; if (oldDisplayPlugin) { - oldDisplayPlugin->deactivate(); + oldDisplayPlugin->deactivate(this); _offscreenContext->makeCurrent(); } } @@ -4844,7 +4845,7 @@ void Application::updateInputModes() { } if (removedInputPlugins.size() > 0) { // A plugin was unchecked foreach(auto removedInputPlugin, removedInputPlugins) { - removedInputPlugin->deactivate(); + removedInputPlugin->deactivate(this); //removedInputPlugin->removeEventFilter(qApp); //removedInputPlugin->removeEventFilter(offscreenUi.data()); } @@ -4861,6 +4862,14 @@ void Application::updateInputModes() { //} } +void Application::addMenu(const QString& menuName) { + Menu::getInstance()->addMenu(menuName); +} + +void Application::removeMenu(const QString& menuName) { + Menu::getInstance()->removeMenu(menuName); +} + void Application::addMenuItem(const QString& path, const QString& name, std::function onClicked, bool checkable, bool checked, const QString& groupName) { auto menu = Menu::getInstance(); MenuWrapper* parentItem = menu->getMenu(path); @@ -4872,6 +4881,18 @@ void Application::addMenuItem(const QString& path, const QString& name, std::fun _currentInputPluginActions.push_back({ path, name }); } +void Application::removeMenuItem(const QString& menuName, const QString& menuItem) { + Menu::getInstance()->removeMenuItem(menuName, menuItem); +} + +bool Application::isOptionChecked(const QString& name) { + return Menu::getInstance()->isOptionChecked(name); +} + +void Application::setIsOptionChecked(const QString& path, bool checked) { + Menu::getInstance()->setIsOptionChecked(path, checked); +} + GlWindow* Application::getVisibleWindow() { return _glWindow; } diff --git a/interface/src/Application.h b/interface/src/Application.h index e642e4f6b0..6c20fc8dd0 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -280,7 +280,12 @@ public: virtual qreal getDevicePixelRatio(); // Plugin container support + virtual void addMenu(const QString& menuName); + virtual void removeMenu(const QString& menuName); virtual void addMenuItem(const QString& path, const QString& name, std::function onClicked, bool checkable, bool checked, const QString& groupName); + virtual void removeMenuItem(const QString& menuName, const QString& menuItem); + virtual bool isOptionChecked(const QString& name); + virtual void setIsOptionChecked(const QString& path, bool checked); virtual GlWindow* getVisibleWindow(); private: diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 1bb610e775..135057ada9 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -28,7 +28,6 @@ #include "devices/DdeFaceTracker.h" #include "devices/Faceshift.h" #include "devices/RealSense.h" -#include // TODO: should be able to remove this once input plugin architecture is finished #include "MainWindow.h" #include "scripting/MenuScriptingInterface.h" #if defined(Q_OS_MAC) || defined(Q_OS_WIN) @@ -443,14 +442,6 @@ Menu::Menu() { qApp, SLOT(setLowVelocityFilter(bool))); addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::ShowIKConstraints, 0, false); - MenuWrapper* sixenseOptionsMenu = handOptionsMenu->addMenu("Sixense"); - addCheckableActionToQMenuAndActionHash(sixenseOptionsMenu, - MenuOption::FilterSixense, - 0, - true, - &SixenseManager::getInstance(), - SLOT(setFilter(bool))); - MenuWrapper* leapOptionsMenu = handOptionsMenu->addMenu("Leap Motion"); addCheckableActionToQMenuAndActionHash(leapOptionsMenu, MenuOption::LeapMotionOnHMD, 0, false); diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 6f30fd4e57..896be9969e 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -190,7 +190,6 @@ namespace MenuOption { const QString ExpandPaintGLTiming = "Expand /paintGL"; const QString ExpandUpdateTiming = "Expand /update"; const QString Faceshift = "Faceshift"; - const QString FilterSixense = "Smooth Sixense Movement"; const QString FirstPerson = "First Person"; const QString Forward = "Forward"; const QString FrameTimer = "Show Timer"; @@ -271,7 +270,6 @@ namespace MenuOption { const QString ShowRealtimeEntityStats = "Show Realtime Entity Stats"; const QString ShowWhosLookingAtMe = "Show Who's Looking at Me"; const QString SimpleShadows = "Simple"; - const QString SixenseEnabled = "Enable Hydra Support"; const QString ShiftHipsForIdleAnimations = "Shift hips for idle animations"; const QString StandingHMDSensorMode = "Standing HMD Sensor Mode"; const QString Stars = "Stars"; diff --git a/libraries/display-plugins/src/display-plugins/NullDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/NullDisplayPlugin.cpp index ff08bdb54b..d6652596c6 100644 --- a/libraries/display-plugins/src/display-plugins/NullDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/NullDisplayPlugin.cpp @@ -33,4 +33,4 @@ void NullDisplayPlugin::display(GLuint sceneTexture, const glm::uvec2& sceneSize void NullDisplayPlugin::finishFrame() {} void NullDisplayPlugin::activate(PluginContainer * container) {} -void NullDisplayPlugin::deactivate() {} +void NullDisplayPlugin::deactivate(PluginContainer* container) {} diff --git a/libraries/display-plugins/src/display-plugins/NullDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/NullDisplayPlugin.h index 7afd604618..7978645f1b 100644 --- a/libraries/display-plugins/src/display-plugins/NullDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/NullDisplayPlugin.h @@ -16,7 +16,7 @@ public: virtual const QString & getName() const override; void activate(PluginContainer * container) override; - void deactivate() override; + void deactivate(PluginContainer* container) override; virtual glm::uvec2 getRecommendedRenderSize() const override; virtual bool hasFocus() const override; diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp index 19b431c6cd..8baca132e7 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp @@ -72,7 +72,7 @@ void OpenGLDisplayPlugin::activate(PluginContainer * container) { _timer.start(1); } -void OpenGLDisplayPlugin::deactivate() { +void OpenGLDisplayPlugin::deactivate(PluginContainer* container) { _timer.stop(); makeCurrent(); diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h index 583d1ebc2d..1436dac05c 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h @@ -23,8 +23,8 @@ public: virtual void preDisplay() override; virtual void finishFrame() override; - virtual void activate(PluginContainer * container) override; - virtual void deactivate() override; + virtual void activate(PluginContainer* container) override; + virtual void deactivate(PluginContainer* container) override; virtual bool eventFilter(QObject* receiver, QEvent* event) override; diff --git a/libraries/display-plugins/src/display-plugins/WindowOpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/WindowOpenGLDisplayPlugin.cpp index 282bec1f66..0ae72d3388 100644 --- a/libraries/display-plugins/src/display-plugins/WindowOpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/WindowOpenGLDisplayPlugin.cpp @@ -45,8 +45,8 @@ void WindowOpenGLDisplayPlugin::activate(PluginContainer * container) { customizeContext(container); } -void WindowOpenGLDisplayPlugin::deactivate() { - OpenGLDisplayPlugin::deactivate(); +void WindowOpenGLDisplayPlugin::deactivate(PluginContainer* container) { + OpenGLDisplayPlugin::deactivate(container); destroyWindow(); _window = nullptr; } diff --git a/libraries/display-plugins/src/display-plugins/WindowOpenGLDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/WindowOpenGLDisplayPlugin.h index 290dbc9aed..d62af73075 100644 --- a/libraries/display-plugins/src/display-plugins/WindowOpenGLDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/WindowOpenGLDisplayPlugin.h @@ -22,7 +22,7 @@ public: virtual bool hasFocus() const override; virtual QWindow* getWindow() const override; virtual void activate(PluginContainer * container) override; - virtual void deactivate() override; + virtual void deactivate(PluginContainer* container) override; virtual void installEventFilter(QObject* filter) override; virtual void removeEventFilter(QObject* filter) override; 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 554c8b0cd2..e20ec22f9e 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 @@ -248,11 +248,11 @@ void Oculus_0_5_DisplayPlugin::activate(PluginContainer * container) { } -void Oculus_0_5_DisplayPlugin::deactivate() { +void Oculus_0_5_DisplayPlugin::deactivate(PluginContainer* container) { _hmdWindow->deleteLater(); _hmdWindow = nullptr; - OculusBaseDisplayPlugin::deactivate(); + OculusBaseDisplayPlugin::deactivate(container); ovrHmd_Destroy(_hmd); _hmd = nullptr; 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 7e42d01e71..e1594b2d1d 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 @@ -26,7 +26,7 @@ public: virtual const QString & getName() const override; virtual void activate(PluginContainer * container) override; - virtual void deactivate() override; + virtual void deactivate(PluginContainer* container) override; virtual bool eventFilter(QObject* receiver, QEvent* event) override; diff --git a/libraries/display-plugins/src/display-plugins/oculus/Oculus_0_6_DisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/oculus/Oculus_0_6_DisplayPlugin.cpp index 924d15c9c9..14007fd418 100644 --- a/libraries/display-plugins/src/display-plugins/oculus/Oculus_0_6_DisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/oculus/Oculus_0_6_DisplayPlugin.cpp @@ -220,14 +220,14 @@ void Oculus_0_6_DisplayPlugin::customizeContext(PluginContainer * container) { _sceneFbo->Init(getRecommendedRenderSize()); } -void Oculus_0_6_DisplayPlugin::deactivate() { +void Oculus_0_6_DisplayPlugin::deactivate(PluginContainer* container) { makeCurrent(); _sceneFbo.reset(); _mirrorFbo.reset(); doneCurrent(); PerformanceTimer::setActive(false); - OculusBaseDisplayPlugin::deactivate(); + OculusBaseDisplayPlugin::deactivate(container); ovrHmd_Destroy(_hmd); _hmd = nullptr; diff --git a/libraries/display-plugins/src/display-plugins/oculus/Oculus_0_6_DisplayPlugin.h b/libraries/display-plugins/src/display-plugins/oculus/Oculus_0_6_DisplayPlugin.h index 18d6a183ec..e89cec30dc 100644 --- a/libraries/display-plugins/src/display-plugins/oculus/Oculus_0_6_DisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/oculus/Oculus_0_6_DisplayPlugin.h @@ -26,7 +26,7 @@ public: virtual const QString & getName() const override; virtual void activate(PluginContainer * container) override; - virtual void deactivate() override; + virtual void deactivate(PluginContainer* container) override; virtual bool eventFilter(QObject* receiver, QEvent* event) override; diff --git a/libraries/display-plugins/src/display-plugins/openvr/OpenVrDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/openvr/OpenVrDisplayPlugin.cpp index af222521fc..42ce0529f5 100644 --- a/libraries/display-plugins/src/display-plugins/openvr/OpenVrDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/openvr/OpenVrDisplayPlugin.cpp @@ -120,7 +120,7 @@ void OpenVrDisplayPlugin::activate(PluginContainer * container) { MainWindowOpenGLDisplayPlugin::activate(container); } -void OpenVrDisplayPlugin::deactivate() { +void OpenVrDisplayPlugin::deactivate(PluginContainer* container) { hmdRefCount--; if (hmdRefCount == 0 && _hmd) { diff --git a/libraries/display-plugins/src/display-plugins/openvr/OpenVrDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/openvr/OpenVrDisplayPlugin.h index 1f02d6cd47..e10a150d18 100644 --- a/libraries/display-plugins/src/display-plugins/openvr/OpenVrDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/openvr/OpenVrDisplayPlugin.h @@ -18,7 +18,7 @@ public: virtual bool isHmd() const override { return true; } virtual void activate(PluginContainer * container) override; - virtual void deactivate() override; + virtual void deactivate(PluginContainer* container) override; virtual glm::uvec2 getRecommendedRenderSize() const override; virtual glm::uvec2 getRecommendedUiSize() const override { return uvec2(1920, 1080); } diff --git a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h index 656bb61455..5df1f2f797 100644 --- a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h +++ b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h @@ -62,7 +62,7 @@ public: const QString& getName() const { return NAME; } virtual void activate(PluginContainer * container) override {}; - virtual void deactivate() override {}; + virtual void deactivate(PluginContainer* container) override {}; virtual void pluginFocusOutEvent() override { focusOutEvent(); } virtual void pluginUpdate(float deltaTime, bool jointsCaptured) override { update(deltaTime, jointsCaptured); } diff --git a/libraries/input-plugins/src/input-plugins/SDL2Manager.h b/libraries/input-plugins/src/input-plugins/SDL2Manager.h index 136ab11c0a..58e5337423 100644 --- a/libraries/input-plugins/src/input-plugins/SDL2Manager.h +++ b/libraries/input-plugins/src/input-plugins/SDL2Manager.h @@ -35,7 +35,7 @@ public: virtual void init() override; virtual void deinit() override; virtual void activate(PluginContainer * container) override {}; - virtual void deactivate() override {}; + virtual void deactivate(PluginContainer* container) override {}; virtual void pluginFocusOutEvent() override; virtual void pluginUpdate(float deltaTime, bool jointsCaptured) override; diff --git a/libraries/input-plugins/src/input-plugins/SixenseManager.cpp b/libraries/input-plugins/src/input-plugins/SixenseManager.cpp index aa92252230..972dec0b83 100644 --- a/libraries/input-plugins/src/input-plugins/SixenseManager.cpp +++ b/libraries/input-plugins/src/input-plugins/SixenseManager.cpp @@ -15,6 +15,7 @@ #include #include "NumericalConstants.h" +#include #include "SixenseManager.h" #include "UserActivityLogger.h" @@ -52,6 +53,12 @@ typedef int (*SixenseTakeIntAndSixenseControllerData)(int, sixenseControllerData const QString SixenseManager::NAME = "Sixense"; +const QString MENU_PARENT = "Avatar"; +const QString MENU_NAME = "Sixense"; +const QString MENU_PATH = MENU_PARENT + ">" + MENU_NAME; +const QString RENDER_CONTROLLERS = "Render Hand Controllers"; +const QString TOGGLE_SMOOTH = "Smooth Sixense Movement"; + SixenseManager& SixenseManager::getInstance() { static SixenseManager sharedInstance; return sharedInstance; @@ -82,6 +89,14 @@ void SixenseManager::activate(PluginContainer* container) { // as the "torso" is below it. _neckBase = glm::vec3(NECK_X, -NECK_Y, NECK_Z); + container->addMenu(MENU_PATH); + container->addMenuItem(MENU_PATH, TOGGLE_SMOOTH, + [this, &container] { this->setFilter(container->isOptionChecked(TOGGLE_SMOOTH)); }, + true, true); + container->addMenuItem(MENU_PATH, RENDER_CONTROLLERS, + [this, &container] { /*this->setShouldRenderController(container->isOptionChecked(RENDER_CONTROLLERS));*/ }, + true, true); + #ifdef __APPLE__ if (!_sixenseLibrary) { @@ -111,8 +126,13 @@ void SixenseManager::activate(PluginContainer* container) { #endif } -void SixenseManager::deinit() { -#ifdef HAVE_SIXENSE_ +void SixenseManager::deactivate(PluginContainer* container) { +#ifdef HAVE_SIXENSE + container->removeMenuItem(MENU_NAME, RENDER_CONTROLLERS); + container->removeMenuItem(MENU_NAME, TOGGLE_SMOOTH); + container->removeMenu(MENU_PATH); + + _poseStateMap.clear(); #ifdef __APPLE__ SixenseBaseFunction sixenseExit = (SixenseBaseFunction)_sixenseLibrary->resolve("sixenseExit"); diff --git a/libraries/input-plugins/src/input-plugins/SixenseManager.h b/libraries/input-plugins/src/input-plugins/SixenseManager.h index ab712999b2..d3b32b51f0 100644 --- a/libraries/input-plugins/src/input-plugins/SixenseManager.h +++ b/libraries/input-plugins/src/input-plugins/SixenseManager.h @@ -62,9 +62,8 @@ public: virtual bool isJointController() const override { return true; } const QString& getName() const { return NAME; } - virtual void deinit() override; virtual void activate(PluginContainer * container) override; - virtual void deactivate() override { _poseStateMap.clear(); } + virtual void deactivate(PluginContainer* container) override; virtual void pluginFocusOutEvent() override { focusOutEvent(); } virtual void pluginUpdate(float deltaTime, bool jointsCaptured) override { update(deltaTime, jointsCaptured); } diff --git a/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp b/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp index 0804378317..7ab60fe7e2 100644 --- a/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp +++ b/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp @@ -114,7 +114,7 @@ void ViveControllerManager::activate(PluginContainer* container) { } } -void ViveControllerManager::deactivate() { +void ViveControllerManager::deactivate(PluginContainer* container) { hmdRefCount--; if (hmdRefCount == 0 && _hmd) { diff --git a/libraries/input-plugins/src/input-plugins/ViveControllerManager.h b/libraries/input-plugins/src/input-plugins/ViveControllerManager.h index 4b132e4961..9d66ebc7a0 100644 --- a/libraries/input-plugins/src/input-plugins/ViveControllerManager.h +++ b/libraries/input-plugins/src/input-plugins/ViveControllerManager.h @@ -56,7 +56,7 @@ public: const QString& getName() const { return NAME; } virtual void activate(PluginContainer * container) override; - virtual void deactivate() override; + virtual void deactivate(PluginContainer* container) override; virtual void pluginFocusOutEvent() override { focusOutEvent(); } virtual void pluginUpdate(float deltaTime, bool jointsCaptured) override { update(deltaTime, jointsCaptured); } diff --git a/libraries/plugins/src/plugins/Plugin.h b/libraries/plugins/src/plugins/Plugin.h index 051d426ff1..1a20ffe4b0 100644 --- a/libraries/plugins/src/plugins/Plugin.h +++ b/libraries/plugins/src/plugins/Plugin.h @@ -16,9 +16,9 @@ public: virtual void deinit(); /// Called when a plugin is being activated for use. May be called multiple times. - virtual void activate(PluginContainer * container) = 0; + virtual void activate(PluginContainer* container) = 0; /// Called when a plugin is no longer being used. May be called multiple times. - virtual void deactivate() = 0; + virtual void deactivate(PluginContainer* container) = 0; /** * Called by the application during it's idle phase. If the plugin needs to do diff --git a/libraries/plugins/src/plugins/PluginContainer.h b/libraries/plugins/src/plugins/PluginContainer.h index a72e5d1c8d..9cdfc30f25 100644 --- a/libraries/plugins/src/plugins/PluginContainer.h +++ b/libraries/plugins/src/plugins/PluginContainer.h @@ -7,6 +7,11 @@ class GlWindow; class PluginContainer { public: + virtual void addMenu(const QString& menuName) = 0; + virtual void removeMenu(const QString& menuName) = 0; virtual void addMenuItem(const QString& path, const QString& name, std::function onClicked, bool checkable = false, bool checked = false, const QString& groupName = "") = 0; + virtual void removeMenuItem(const QString& menuName, const QString& menuItem) = 0; + virtual bool isOptionChecked(const QString& name) = 0; + virtual void setIsOptionChecked(const QString& path, bool checked) = 0; virtual GlWindow* getVisibleWindow() = 0; }; diff --git a/tests/ui/src/main.cpp b/tests/ui/src/main.cpp index 674da233d2..3eb01071ba 100644 --- a/tests/ui/src/main.cpp +++ b/tests/ui/src/main.cpp @@ -213,7 +213,6 @@ public: ShowBordersEntityNodes, ShowIKConstraints, SimpleShadows, - SixenseEnabled, ShiftHipsForIdleAnimations, Stars, Stats, From 505ef4c5cc90c671c9a6bbf41f4cbb324ab049c1 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Wed, 22 Jul 2015 11:36:31 -0700 Subject: [PATCH 2/8] set up sixense/vive menu items with correct event forwarding --- interface/src/Application.cpp | 6 ++++-- interface/src/Application.h | 2 +- .../ControllerScriptingInterface.cpp | 2 +- .../src/input-plugins/SixenseManager.cpp | 7 +------ .../input-plugins/ViveControllerManager.cpp | 20 +++++++++++++++++-- .../src/input-plugins/ViveControllerManager.h | 6 +++++- .../plugins/src/plugins/PluginContainer.h | 2 +- 7 files changed, 31 insertions(+), 14 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 8565f5f3cf..280d474772 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4870,13 +4870,15 @@ void Application::removeMenu(const QString& menuName) { Menu::getInstance()->removeMenu(menuName); } -void Application::addMenuItem(const QString& path, const QString& name, std::function onClicked, bool checkable, bool checked, const QString& groupName) { +void Application::addMenuItem(const QString& path, const QString& name, std::function onClicked, bool checkable, bool checked, const QString& groupName) { auto menu = Menu::getInstance(); MenuWrapper* parentItem = menu->getMenu(path); QAction* action = parentItem->addAction(name); connect(action, &QAction::triggered, [=] { - onClicked(); + onClicked(action->isChecked()); }); + action->setCheckable(checkable); + action->setChecked(checked); _currentDisplayPluginActions.push_back({ path, name }); _currentInputPluginActions.push_back({ path, name }); } diff --git a/interface/src/Application.h b/interface/src/Application.h index 6c20fc8dd0..4c01889c5f 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -282,7 +282,7 @@ public: // Plugin container support virtual void addMenu(const QString& menuName); virtual void removeMenu(const QString& menuName); - virtual void addMenuItem(const QString& path, const QString& name, std::function onClicked, bool checkable, bool checked, const QString& groupName); + virtual void addMenuItem(const QString& path, const QString& name, std::function onClicked, bool checkable, bool checked, const QString& groupName); virtual void removeMenuItem(const QString& menuName, const QString& menuItem); virtual bool isOptionChecked(const QString& name); virtual void setIsOptionChecked(const QString& path, bool checked); diff --git a/interface/src/scripting/ControllerScriptingInterface.cpp b/interface/src/scripting/ControllerScriptingInterface.cpp index bdfea67eac..6fec1a1002 100644 --- a/interface/src/scripting/ControllerScriptingInterface.cpp +++ b/interface/src/scripting/ControllerScriptingInterface.cpp @@ -19,7 +19,7 @@ #include "ControllerScriptingInterface.h" // TODO: this needs to be removed, as well as any related controller-specific information -#include +#include ControllerScriptingInterface::ControllerScriptingInterface() : diff --git a/libraries/input-plugins/src/input-plugins/SixenseManager.cpp b/libraries/input-plugins/src/input-plugins/SixenseManager.cpp index 972dec0b83..ede66b3720 100644 --- a/libraries/input-plugins/src/input-plugins/SixenseManager.cpp +++ b/libraries/input-plugins/src/input-plugins/SixenseManager.cpp @@ -56,7 +56,6 @@ const QString SixenseManager::NAME = "Sixense"; const QString MENU_PARENT = "Avatar"; const QString MENU_NAME = "Sixense"; const QString MENU_PATH = MENU_PARENT + ">" + MENU_NAME; -const QString RENDER_CONTROLLERS = "Render Hand Controllers"; const QString TOGGLE_SMOOTH = "Smooth Sixense Movement"; SixenseManager& SixenseManager::getInstance() { @@ -91,11 +90,8 @@ void SixenseManager::activate(PluginContainer* container) { container->addMenu(MENU_PATH); container->addMenuItem(MENU_PATH, TOGGLE_SMOOTH, - [this, &container] { this->setFilter(container->isOptionChecked(TOGGLE_SMOOTH)); }, + [this, container] (bool clicked) { this->setFilter(clicked); }, true, true); - container->addMenuItem(MENU_PATH, RENDER_CONTROLLERS, - [this, &container] { /*this->setShouldRenderController(container->isOptionChecked(RENDER_CONTROLLERS));*/ }, - true, true); #ifdef __APPLE__ @@ -128,7 +124,6 @@ void SixenseManager::activate(PluginContainer* container) { void SixenseManager::deactivate(PluginContainer* container) { #ifdef HAVE_SIXENSE - container->removeMenuItem(MENU_NAME, RENDER_CONTROLLERS); container->removeMenuItem(MENU_NAME, TOGGLE_SMOOTH); container->removeMenu(MENU_PATH); diff --git a/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp b/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp index 7ab60fe7e2..bb2f8c126a 100644 --- a/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp +++ b/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp @@ -17,8 +17,9 @@ #include #include #include -#include +#include #include "NumericalConstants.h" +#include #include "UserActivityLogger.h" extern vr::IVRSystem* _hmd; @@ -44,12 +45,18 @@ const QString CONTROLLER_MODEL_STRING = "vr_controller_05_wireless_b"; const QString ViveControllerManager::NAME = "OpenVR"; +const QString MENU_PARENT = "Avatar"; +const QString MENU_NAME = "Vive Controllers"; +const QString MENU_PATH = MENU_PARENT + ">" + MENU_NAME; +const QString RENDER_CONTROLLERS = "Render Hand Controllers"; + ViveControllerManager::ViveControllerManager() : InputDevice("SteamVR Controller"), _trackedControllers(0), _modelLoaded(false), _leftHandRenderID(0), - _rightHandRenderID(0) + _rightHandRenderID(0), + _renderControllers(false) { } @@ -59,6 +66,11 @@ bool ViveControllerManager::isSupported() const { } void ViveControllerManager::activate(PluginContainer* container) { + container->addMenu(MENU_PATH); + container->addMenuItem(MENU_PATH, RENDER_CONTROLLERS, + [this, &container] (bool clicked) { this->setRenderControllers(clicked); }, + true, true); + hmdRefCount++; if (!_hmd) { vr::HmdError eError = vr::HmdError_None; @@ -111,10 +123,14 @@ void ViveControllerManager::activate(PluginContainer* container) { _texture->autoGenerateMips(-1); _modelLoaded = true; + _renderControllers = true; } } void ViveControllerManager::deactivate(PluginContainer* container) { + container->removeMenuItem(MENU_NAME, RENDER_CONTROLLERS); + container->removeMenu(MENU_PATH); + hmdRefCount--; if (hmdRefCount == 0 && _hmd) { diff --git a/libraries/input-plugins/src/input-plugins/ViveControllerManager.h b/libraries/input-plugins/src/input-plugins/ViveControllerManager.h index 9d66ebc7a0..82d2c13d7b 100644 --- a/libraries/input-plugins/src/input-plugins/ViveControllerManager.h +++ b/libraries/input-plugins/src/input-plugins/ViveControllerManager.h @@ -42,7 +42,7 @@ public: AXIS_3, AXIS_4, }; - + enum JointChannel { LEFT_HAND = 0, RIGHT_HAND, @@ -68,6 +68,8 @@ public: virtual void focusOutEvent() override; void updateRendering(RenderArgs* args, render::ScenePointer scene, render::PendingChanges pendingChanges); + + void setRenderControllers(bool renderControllers) { _renderControllers = renderControllers; } UserInputMapper::Input makeInput(unsigned int button, int index); UserInputMapper::Input makeInput(JoystickAxisChannel axis, int index); @@ -86,6 +88,8 @@ private: model::Geometry _modelGeometry; gpu::TexturePointer _texture; + bool _renderControllers; + int _leftHandRenderID; int _rightHandRenderID; diff --git a/libraries/plugins/src/plugins/PluginContainer.h b/libraries/plugins/src/plugins/PluginContainer.h index 9cdfc30f25..305906e978 100644 --- a/libraries/plugins/src/plugins/PluginContainer.h +++ b/libraries/plugins/src/plugins/PluginContainer.h @@ -9,7 +9,7 @@ class PluginContainer { public: virtual void addMenu(const QString& menuName) = 0; virtual void removeMenu(const QString& menuName) = 0; - virtual void addMenuItem(const QString& path, const QString& name, std::function onClicked, bool checkable = false, bool checked = false, const QString& groupName = "") = 0; + virtual void addMenuItem(const QString& path, const QString& name, std::function onClicked, bool checkable = false, bool checked = false, const QString& groupName = "") = 0; virtual void removeMenuItem(const QString& menuName, const QString& menuItem) = 0; virtual bool isOptionChecked(const QString& name) = 0; virtual void setIsOptionChecked(const QString& path, bool checked) = 0; From 8833d7b67ecd6b4108e170281b646f7605259e52 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Wed, 22 Jul 2015 11:47:00 -0700 Subject: [PATCH 3/8] OpenVR display mode will automatically switch you to standing mode on activation, switch off on deactivation --- .../src/display-plugins/openvr/OpenVrDisplayPlugin.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libraries/display-plugins/src/display-plugins/openvr/OpenVrDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/openvr/OpenVrDisplayPlugin.cpp index 42ce0529f5..64d53af4d7 100644 --- a/libraries/display-plugins/src/display-plugins/openvr/OpenVrDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/openvr/OpenVrDisplayPlugin.cpp @@ -31,6 +31,8 @@ Q_LOGGING_CATEGORY(displayplugins, "hifi.displayplugins") const QString OpenVrDisplayPlugin::NAME("OpenVR (Vive)"); +const QString StandingHMDSensorMode = "Standing HMD Sensor Mode"; // this probably shouldn't be hardcoded here + const QString & OpenVrDisplayPlugin::getName() const { return NAME; } @@ -80,6 +82,8 @@ bool OpenVrDisplayPlugin::isSupported() const { } void OpenVrDisplayPlugin::activate(PluginContainer * container) { + container->setIsOptionChecked(StandingHMDSensorMode, true); + hmdRefCount++; vr::HmdError eError = vr::HmdError_None; if (!_hmd) { @@ -121,6 +125,8 @@ void OpenVrDisplayPlugin::activate(PluginContainer * container) { } void OpenVrDisplayPlugin::deactivate(PluginContainer* container) { + container->setIsOptionChecked(StandingHMDSensorMode, false); + hmdRefCount--; if (hmdRefCount == 0 && _hmd) { From 2f210be4687bc6407f4b733df4b7eb731ebe4ee4 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Wed, 22 Jul 2015 12:23:05 -0700 Subject: [PATCH 4/8] setting up 2d display fullscreen option --- .../Basic2DWindowOpenGLDisplayPlugin.cpp | 23 ++++++++++++++++++- .../Basic2DWindowOpenGLDisplayPlugin.h | 3 +++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp index ef8c5ed39f..497463fcde 100644 --- a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp @@ -7,8 +7,29 @@ // #include "Basic2DWindowOpenGLDisplayPlugin.h" +#include + const QString Basic2DWindowOpenGLDisplayPlugin::NAME("2D Display"); -const QString & Basic2DWindowOpenGLDisplayPlugin::getName() const { +const QString MENU_PARENT = "View"; +const QString MENU_NAME = "Display Options"; +const QString MENU_PATH = MENU_PARENT + ">" + MENU_NAME; +const QString FULLSCREEN = "Fullscreen"; + +const QString& Basic2DWindowOpenGLDisplayPlugin::getName() const { return NAME; } + +void Basic2DWindowOpenGLDisplayPlugin::activate(PluginContainer * container) { + container->addMenu(MENU_PATH); + container->addMenuItem(MENU_PATH, FULLSCREEN, + [this, container] (bool clicked) { }, + true, false); + MainWindowOpenGLDisplayPlugin::activate(container); +} + +void Basic2DWindowOpenGLDisplayPlugin::deactivate(PluginContainer* container) { + container->removeMenuItem(MENU_NAME, FULLSCREEN); + container->removeMenu(MENU_PATH); + MainWindowOpenGLDisplayPlugin::deactivate(container); +} \ No newline at end of file diff --git a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h index 63027d2bd9..93ceb6a8a7 100644 --- a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h @@ -13,6 +13,9 @@ class Basic2DWindowOpenGLDisplayPlugin : public MainWindowOpenGLDisplayPlugin { Q_OBJECT public: + virtual void activate(PluginContainer * container) override; + virtual void deactivate(PluginContainer* container) override; + virtual const QString & getName() const override; private: From a63e65767f704c46eec80f8169040be1f14f7ce8 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Wed, 22 Jul 2015 14:18:26 -0700 Subject: [PATCH 5/8] attempt to fix build error on mac --- libraries/input-plugins/src/input-plugins/SixenseManager.h | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/input-plugins/src/input-plugins/SixenseManager.h b/libraries/input-plugins/src/input-plugins/SixenseManager.h index d3b32b51f0..09166d4eb6 100644 --- a/libraries/input-plugins/src/input-plugins/SixenseManager.h +++ b/libraries/input-plugins/src/input-plugins/SixenseManager.h @@ -18,6 +18,7 @@ #include "sixense.h" #ifdef __APPLE__ + #include #include #endif From fe632e13b200b4f6a88c07ba958c8135ec86190a Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Wed, 22 Jul 2015 17:58:22 -0700 Subject: [PATCH 6/8] trying to reenable fullscreen --- .../Basic2DWindowOpenGLDisplayPlugin.cpp | 54 +++++++++++++++++-- .../Basic2DWindowOpenGLDisplayPlugin.h | 3 ++ .../src/input-plugins/SixenseManager.cpp | 2 +- .../input-plugins/ViveControllerManager.cpp | 2 +- 4 files changed, 56 insertions(+), 5 deletions(-) diff --git a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp index 497463fcde..085cca117f 100644 --- a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp @@ -8,6 +8,7 @@ #include "Basic2DWindowOpenGLDisplayPlugin.h" #include +#include const QString Basic2DWindowOpenGLDisplayPlugin::NAME("2D Display"); @@ -20,10 +21,10 @@ const QString& Basic2DWindowOpenGLDisplayPlugin::getName() const { return NAME; } -void Basic2DWindowOpenGLDisplayPlugin::activate(PluginContainer * container) { +void Basic2DWindowOpenGLDisplayPlugin::activate(PluginContainer* container) { container->addMenu(MENU_PATH); container->addMenuItem(MENU_PATH, FULLSCREEN, - [this, container] (bool clicked) { }, + [this] (bool clicked) { this->setFullscreen(clicked); }, true, false); MainWindowOpenGLDisplayPlugin::activate(container); } @@ -32,4 +33,51 @@ void Basic2DWindowOpenGLDisplayPlugin::deactivate(PluginContainer* container) { container->removeMenuItem(MENU_NAME, FULLSCREEN); container->removeMenu(MENU_PATH); MainWindowOpenGLDisplayPlugin::deactivate(container); -} \ No newline at end of file +} + +void Basic2DWindowOpenGLDisplayPlugin::setFullscreen(bool fullscreen) { + // The following code block is useful on platforms that can have a visible + // app menu in a fullscreen window. However the OSX mechanism hides the + // application menu for fullscreen apps, so the check is not required. +//#ifndef Q_OS_MAC +// if (fullscreen) { +// // Move menu to a QWidget floating above _glWidget so that show/hide doesn't adjust viewport. +// _menuBarHeight = Menu::getInstance()->height(); +// Menu::getInstance()->setParent(_fullscreenMenuWidget); +// Menu::getInstance()->setFixedWidth(_window->windowHandle()->screen()->size().width()); +// _fullscreenMenuWidget->show(); +// } +// else { +// // Restore menu to being part of MainWindow. +// _fullscreenMenuWidget->hide(); +// _window->setMenuBar(Menu::getInstance()); +// _window->menuBar()->setMaximumHeight(QWIDGETSIZE_MAX); +// } +//#endif + + // Work around Qt bug that prevents floating menus being shown when in fullscreen mode. + // https://bugreports.qt.io/browse/QTBUG-41883 + // Known issue: Top-level menu items don't highlight when cursor hovers. This is probably a side-effect of the work-around. + // TODO: Remove this work-around once the bug has been fixed and restore the following lines. + //_window->setWindowState(fullscreen ? (_window->windowState() | Qt::WindowFullScreen) : + // (_window->windowState() & ~Qt::WindowFullScreen)); + auto window = this->getWindow(); + window->hide(); + if (fullscreen) { + auto state = window->windowState() | Qt::WindowFullScreen; + window->setWindowState(Qt::WindowState((int)state)); + window->setPosition(0, 0); + // The next line produces the following warning in the log: + // [WARNING][03 / 06 12:17 : 58] QWidget::setMinimumSize: (/ MainWindow) Negative sizes + // (0, -1) are not possible + // This is better than the alternative which is to have the window slightly less than fullscreen with a visible line + // of pixels for the remainder of the screen. + //window->setContentsMargins(0, 0, 0, -1); + } + else { + window->setWindowState(Qt::WindowState(window->windowState() & ~Qt::WindowFullScreen)); + //window->setContentsMargins(0, 0, 0, 0); + } + + window->show(); +} diff --git a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h index 93ceb6a8a7..5bbf93bbd2 100644 --- a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h @@ -18,6 +18,9 @@ public: virtual const QString & getName() const override; +public slots: + void setFullscreen(bool fullscreen); + private: static const QString NAME; }; diff --git a/libraries/input-plugins/src/input-plugins/SixenseManager.cpp b/libraries/input-plugins/src/input-plugins/SixenseManager.cpp index 4138c78a92..e9443b76d4 100644 --- a/libraries/input-plugins/src/input-plugins/SixenseManager.cpp +++ b/libraries/input-plugins/src/input-plugins/SixenseManager.cpp @@ -90,7 +90,7 @@ void SixenseManager::activate(PluginContainer* container) { container->addMenu(MENU_PATH); container->addMenuItem(MENU_PATH, TOGGLE_SMOOTH, - [this, container] (bool clicked) { this->setFilter(clicked); }, + [this] (bool clicked) { this->setFilter(clicked); }, true, true); #ifdef __APPLE__ diff --git a/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp b/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp index 1b8d68d014..5b11801dd5 100644 --- a/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp +++ b/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp @@ -75,7 +75,7 @@ void ViveControllerManager::activate(PluginContainer* container) { #ifndef Q_OS_MAC container->addMenu(MENU_PATH); container->addMenuItem(MENU_PATH, RENDER_CONTROLLERS, - [this, &container] (bool clicked) { this->setRenderControllers(clicked); }, + [this] (bool clicked) { this->setRenderControllers(clicked); }, true, true); hmdRefCount++; From 20c736dd5d91e7272e722c826d4843bb77e03f9f Mon Sep 17 00:00:00 2001 From: Sam Gondelman Date: Wed, 22 Jul 2015 18:17:06 -0700 Subject: [PATCH 7/8] cleaning up --- .../input-plugins/src/input-plugins/ViveControllerManager.cpp | 1 - .../input-plugins/src/input-plugins/ViveControllerManager.h | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp b/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp index 5b11801dd5..f7b35305b2 100644 --- a/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp +++ b/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp @@ -376,7 +376,6 @@ void ViveControllerManager::registerToUserInputMapper(UserInputMapper& mapper) { void ViveControllerManager::assignDefaultInputMapping(UserInputMapper& mapper) { const float JOYSTICK_MOVE_SPEED = 1.0f; - const float BOOM_SPEED = 0.1f; // Left Trackpad: Movement, strafing mapper.addInputChannel(UserInputMapper::LONGITUDINAL_FORWARD, makeInput(AXIS_Y_POS, 0), makeInput(TRACKPAD_BUTTON, 0), JOYSTICK_MOVE_SPEED); diff --git a/libraries/input-plugins/src/input-plugins/ViveControllerManager.h b/libraries/input-plugins/src/input-plugins/ViveControllerManager.h index 78f6024ba1..251343cd2b 100644 --- a/libraries/input-plugins/src/input-plugins/ViveControllerManager.h +++ b/libraries/input-plugins/src/input-plugins/ViveControllerManager.h @@ -88,11 +88,11 @@ private: model::Geometry _modelGeometry; gpu::TexturePointer _texture; - bool _renderControllers; - int _leftHandRenderID; int _rightHandRenderID; + bool _renderControllers; + static const QString NAME; }; From 0bb3d5b5a03cb6081e1d182cef5b39012f29cbb3 Mon Sep 17 00:00:00 2001 From: Sam Gondelman Date: Thu, 23 Jul 2015 11:51:36 -0700 Subject: [PATCH 8/8] disabled fullscreen, disabled sixense on mac temporarily --- interface/src/InputPlugins.cpp | 3 +++ .../Basic2DWindowOpenGLDisplayPlugin.cpp | 13 ++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/interface/src/InputPlugins.cpp b/interface/src/InputPlugins.cpp index 87d4311545..c0f6dcbf65 100644 --- a/interface/src/InputPlugins.cpp +++ b/interface/src/InputPlugins.cpp @@ -45,7 +45,10 @@ 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/Basic2DWindowOpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp index 085cca117f..c427fe333f 100644 --- a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp @@ -22,16 +22,16 @@ const QString& Basic2DWindowOpenGLDisplayPlugin::getName() const { } void Basic2DWindowOpenGLDisplayPlugin::activate(PluginContainer* container) { - container->addMenu(MENU_PATH); - container->addMenuItem(MENU_PATH, FULLSCREEN, - [this] (bool clicked) { this->setFullscreen(clicked); }, - true, false); +// container->addMenu(MENU_PATH); +// container->addMenuItem(MENU_PATH, FULLSCREEN, +// [this] (bool clicked) { this->setFullscreen(clicked); }, +// true, false); MainWindowOpenGLDisplayPlugin::activate(container); } void Basic2DWindowOpenGLDisplayPlugin::deactivate(PluginContainer* container) { - container->removeMenuItem(MENU_NAME, FULLSCREEN); - container->removeMenu(MENU_PATH); +// container->removeMenuItem(MENU_NAME, FULLSCREEN); +// container->removeMenu(MENU_PATH); MainWindowOpenGLDisplayPlugin::deactivate(container); } @@ -66,7 +66,6 @@ void Basic2DWindowOpenGLDisplayPlugin::setFullscreen(bool fullscreen) { if (fullscreen) { auto state = window->windowState() | Qt::WindowFullScreen; window->setWindowState(Qt::WindowState((int)state)); - window->setPosition(0, 0); // The next line produces the following warning in the log: // [WARNING][03 / 06 12:17 : 58] QWidget::setMinimumSize: (/ MainWindow) Negative sizes // (0, -1) are not possible