From cbade6a095079e1ac8527342c8a5cb0e9fd5b266 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Mon, 26 Oct 2015 19:27:22 -0700 Subject: [PATCH] Do not shut down hydra when it says there are no devices. Count to allowedHydraFailures in settings. --- .../input-plugins/src/input-plugins/SixenseManager.cpp | 8 +++++++- .../input-plugins/src/input-plugins/SixenseManager.h | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/libraries/input-plugins/src/input-plugins/SixenseManager.cpp b/libraries/input-plugins/src/input-plugins/SixenseManager.cpp index 3950fdea43..8ea05fc300 100644 --- a/libraries/input-plugins/src/input-plugins/SixenseManager.cpp +++ b/libraries/input-plugins/src/input-plugins/SixenseManager.cpp @@ -167,7 +167,10 @@ void SixenseManager::update(float deltaTime, bool jointsCaptured) { if (sixenseGetNumActiveControllers() == 0) { if (_hydrasConnected) { - qCDebug(inputplugins, "hydra disconnected"); + qCDebug(inputplugins) << "hydra disconnected" << _badDataCount; + if (_badDataCount++ < _allowedBadDataCount) { // gotta get some no-active in a row before we shut things down + return; + } } _hydrasConnected = false; if (_deviceID != 0) { @@ -181,6 +184,7 @@ void SixenseManager::update(float deltaTime, bool jointsCaptured) { PerformanceTimer perfTimer("sixense"); if (!_hydrasConnected) { _hydrasConnected = true; + _badDataCount = 0; registerToUserInputMapper(*userInputMapper); assignDefaultInputMapping(*userInputMapper); UserActivityLogger::getInstance().connectedDevice("spatial_controller", "hydra"); @@ -555,6 +559,7 @@ void SixenseManager::saveSettings() const { settings.setVec3Value(QString("avatarPosition"), _avatarPosition); settings.setQuatValue(QString("avatarRotation"), _avatarRotation); settings.setValue(QString("reachLength"), QVariant(_reachLength)); + settings.setValue(QString("allowedHydraFailures"), 120); } settings.endGroup(); } @@ -567,6 +572,7 @@ void SixenseManager::loadSettings() { settings.getVec3ValueIfValid(QString("avatarPosition"), _avatarPosition); settings.getQuatValueIfValid(QString("avatarRotation"), _avatarRotation); settings.getFloatValueIfValid(QString("reachLength"), _reachLength); + _allowedBadDataCount = settings.value(QString("allowedHydraFailures"), 120).toInt(); } settings.endGroup(); } diff --git a/libraries/input-plugins/src/input-plugins/SixenseManager.h b/libraries/input-plugins/src/input-plugins/SixenseManager.h index 9fa7f84a86..90bd830650 100644 --- a/libraries/input-plugins/src/input-plugins/SixenseManager.h +++ b/libraries/input-plugins/src/input-plugins/SixenseManager.h @@ -114,6 +114,8 @@ private: #endif bool _hydrasConnected; + int _badDataCount; + int _allowedBadDataCount; static const QString NAME; static const QString HYDRA_ID_STRING;