From f65f28c52a36f247afb6f91dda7636ed3a79569b Mon Sep 17 00:00:00 2001 From: danteruiz Date: Tue, 30 Apr 2019 16:44:47 -0700 Subject: [PATCH 1/5] refresh rate controller --- interface/src/Application.cpp | 34 +++++++++++++---------- interface/src/RefreshRateManager.cpp | 40 +++++++++++++++++++--------- interface/src/RefreshRateManager.h | 8 ++++++ 3 files changed, 55 insertions(+), 27 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 9a2d320329..87b872d7b7 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4064,9 +4064,6 @@ bool Application::event(QEvent* event) { case QEvent::KeyRelease: keyReleaseEvent(static_cast(event)); return true; - case QEvent::FocusIn: - focusInEvent(static_cast(event)); - return true; case QEvent::FocusOut: focusOutEvent(static_cast(event)); return true; @@ -4109,6 +4106,17 @@ bool Application::eventFilter(QObject* object, QEvent* event) { return true; } + auto eventType = event->type(); + if (eventType == QEvent::KeyPress || eventType == QEvent::KeyRelease || eventType == QEvent::MouseMove) { + RefreshRateManager& refreshRateManager = getRefreshRateManager(); + auto refreshRateRegime = refreshRateManager.getRefreshRateRegime(); + + if (refreshRateRegime == RefreshRateManager::RefreshRateRegime::RUNNING || + refreshRateRegime == RefreshRateManager::RefreshRateRegime::INACTIVE) { + getRefreshRateManager().resetInactiveTimer(); + } + } + if (event->type() == QEvent::Leave) { getApplicationCompositor().handleLeaveEvent(); } @@ -4420,13 +4428,6 @@ void Application::keyReleaseEvent(QKeyEvent* event) { } -void Application::focusInEvent(QFocusEvent* event) { - if (!_aboutToQuit && _startUpFinished) { - getRefreshRateManager().setRefreshRateRegime(RefreshRateManager::RefreshRateRegime::RUNNING); - } -} - - void Application::focusOutEvent(QFocusEvent* event) { auto inputPlugins = PluginManager::getInstance()->getInputPlugins(); foreach(auto inputPlugin, inputPlugins) { @@ -4434,10 +4435,6 @@ void Application::focusOutEvent(QFocusEvent* event) { inputPlugin->pluginFocusOutEvent(); } } - - if (!_aboutToQuit && _startUpFinished) { - getRefreshRateManager().setRefreshRateRegime(RefreshRateManager::RefreshRateRegime::UNFOCUS); - } // FIXME spacemouse code still needs cleanup #if 0 //SpacemouseDevice::getInstance().focusOutEvent(); @@ -8549,11 +8546,20 @@ void Application::activeChanged(Qt::ApplicationState state) { switch (state) { case Qt::ApplicationActive: _isForeground = true; + if (!_aboutToQuit && _startUpFinished) { + getRefreshRateManager().setRefreshRateRegime(RefreshRateManager::RefreshRateRegime::RUNNING); + } break; case Qt::ApplicationSuspended: + break; case Qt::ApplicationHidden: + break; case Qt::ApplicationInactive: + if (!_aboutToQuit && _startUpFinished) { + getRefreshRateManager().setRefreshRateRegime(RefreshRateManager::RefreshRateRegime::UNFOCUS); + } + break; default: _isForeground = false; break; diff --git a/interface/src/RefreshRateManager.cpp b/interface/src/RefreshRateManager.cpp index c4a35da1f6..d3e0b102ab 100644 --- a/interface/src/RefreshRateManager.cpp +++ b/interface/src/RefreshRateManager.cpp @@ -26,7 +26,7 @@ static const std::array REFRESH_RATE_REGIME_TO_STRING = - { { "Running", "Unfocus", "Minimized", "StartUp", "ShutDown" } }; + { { "Running", "Unfocus", "Minimized", "StartUp", "ShutDown", "Inactive" } }; static const std::array UX_MODE_TO_STRING = { { "Desktop", "HMD" } }; @@ -36,21 +36,20 @@ static const std::map REFRE { "Interactive", RefreshRateManager::RefreshRateProfile::INTERACTIVE }, { "Realtime", RefreshRateManager::RefreshRateProfile::REALTIME } }; -static const std::array RUNNING_REGIME_PROFILES = - { { 5, 20, 60 } }; +static const std::array ECO_PROFILE = + { { 5, 5, 2, 30, 30, 4 } }; -static const std::array UNFOCUS_REGIME_PROFILES = - { { 5, 5, 10 } }; +static const std::array INTERACTIVE_PROFILE = + { { 25, 5, 2, 30, 30, 20 } }; -static const std::array MINIMIZED_REGIME_PROFILE = - { { 2, 2, 2 } }; +static const std::array REALTIME_PROFILE = + { { 60, 10, 2, 30, 30, 30} }; -static const std::array START_AND_SHUTDOWN_REGIME_PROFILES = - { { 30, 30, 30 } }; +static const std::array, RefreshRateManager::RefreshRateProfile::PROFILE_NUM> REFRESH_RATE_PROFILES = + { { ECO_PROFILE, INTERACTIVE_PROFILE, REALTIME_PROFILE } }; -static const std::array, RefreshRateManager::RefreshRateRegime::REGIME_NUM> REFRESH_RATE_REGIMES = - { { RUNNING_REGIME_PROFILES, UNFOCUS_REGIME_PROFILES, MINIMIZED_REGIME_PROFILE, - START_AND_SHUTDOWN_REGIME_PROFILES, START_AND_SHUTDOWN_REGIME_PROFILES } }; + +static const int INACTIVE_TIMER_LIMIT = 3000; std::string RefreshRateManager::refreshRateProfileToString(RefreshRateManager::RefreshRateProfile refreshRateProfile) { @@ -71,6 +70,21 @@ std::string RefreshRateManager::uxModeToString(RefreshRateManager::RefreshRateMa RefreshRateManager::RefreshRateManager() { _refreshRateProfile = (RefreshRateManager::RefreshRateProfile) _refreshRateMode.get(); + _inactiveTimer->setInterval(INACTIVE_TIMER_LIMIT); + _inactiveTimer->setSingleShot(true); + QObject::connect(_inactiveTimer.get(), &QTimer::timeout, [&] { + if (_uxMode == RefreshRateManager::UXMode::DESKTOP && + getRefreshRateRegime() == RefreshRateManager::RefreshRateRegime::RUNNING) { + setRefreshRateRegime(RefreshRateManager::RefreshRateRegime::INACTIVE); + } + }); +} + +void RefreshRateManager::resetInactiveTimer() { + if (_uxMode == RefreshRateManager::UXMode::DESKTOP) { + _inactiveTimer->start(); + setRefreshRateRegime(RefreshRateManager::RefreshRateRegime::RUNNING); + } } void RefreshRateManager::setRefreshRateProfile(RefreshRateManager::RefreshRateProfile refreshRateProfile) { @@ -123,7 +137,7 @@ void RefreshRateManager::updateRefreshRateController() const { _refreshRateProfile == RefreshRateManager::RefreshRateProfile::INTERACTIVE) { targetRefreshRate = getInteractiveRefreshRate(); } else { - targetRefreshRate = REFRESH_RATE_REGIMES[_refreshRateRegime][_refreshRateProfile]; + targetRefreshRate = REFRESH_RATE_PROFILES[_refreshRateProfile][_refreshRateRegime]; } } else { targetRefreshRate = HMD_TARGET_RATE; diff --git a/interface/src/RefreshRateManager.h b/interface/src/RefreshRateManager.h index ee7debe3ef..f28941e982 100644 --- a/interface/src/RefreshRateManager.h +++ b/interface/src/RefreshRateManager.h @@ -15,6 +15,8 @@ #include #include +#include + #include #include @@ -33,6 +35,7 @@ public: MINIMIZED, STARTUP, SHUTDOWN, + INACTIVE, REGIME_NUM }; @@ -60,6 +63,8 @@ public: void setInteractiveRefreshRate(int refreshRate); int getInteractiveRefreshRate() const; + void resetInactiveTimer(); + static std::string refreshRateProfileToString(RefreshRateProfile refreshRateProfile); static RefreshRateProfile refreshRateProfileFromString(std::string refreshRateProfile); static std::string uxModeToString(UXMode uxMode); @@ -78,6 +83,9 @@ private: Setting::Handle _refreshRateMode { "refreshRateProfile", INTERACTIVE }; std::function _refreshRateOperator { nullptr }; + + + std::shared_ptr _inactiveTimer { std::make_shared() }; }; #endif From 7f71ec8d3d39c0d6aeacf595059c1da1fa13ea4d Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Wed, 1 May 2019 16:57:03 -0700 Subject: [PATCH 2/5] Apply my own comments --- interface/src/Application.cpp | 13 ++++--------- interface/src/RefreshRateManager.cpp | 26 +++++++++++++++----------- interface/src/RefreshRateManager.h | 6 +++--- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 87b872d7b7..cc75ce8509 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4109,12 +4109,7 @@ bool Application::eventFilter(QObject* object, QEvent* event) { auto eventType = event->type(); if (eventType == QEvent::KeyPress || eventType == QEvent::KeyRelease || eventType == QEvent::MouseMove) { RefreshRateManager& refreshRateManager = getRefreshRateManager(); - auto refreshRateRegime = refreshRateManager.getRefreshRateRegime(); - - if (refreshRateRegime == RefreshRateManager::RefreshRateRegime::RUNNING || - refreshRateRegime == RefreshRateManager::RefreshRateRegime::INACTIVE) { - getRefreshRateManager().resetInactiveTimer(); - } + getRefreshRateManager().resetInactiveTimer(); } if (event->type() == QEvent::Leave) { @@ -5603,7 +5598,7 @@ void Application::resumeAfterLoginDialogActionTaken() { _myCamera.setMode(_previousCameraMode); cameraModeChanged(); _startUpFinished = true; - getRefreshRateManager().setRefreshRateRegime(RefreshRateManager::RefreshRateRegime::RUNNING); + getRefreshRateManager().setRefreshRateRegime(RefreshRateManager::RefreshRateRegime::FOCUS_ACTIVE); } void Application::loadAvatarScripts(const QVector& urls) { @@ -8547,7 +8542,7 @@ void Application::activeChanged(Qt::ApplicationState state) { case Qt::ApplicationActive: _isForeground = true; if (!_aboutToQuit && _startUpFinished) { - getRefreshRateManager().setRefreshRateRegime(RefreshRateManager::RefreshRateRegime::RUNNING); + getRefreshRateManager().setRefreshRateRegime(RefreshRateManager::RefreshRateRegime::FOCUS_ACTIVE); } break; @@ -8890,7 +8885,7 @@ void Application::setDisplayPlugin(DisplayPluginPointer newDisplayPlugin) { RefreshRateManager& refreshRateManager = getRefreshRateManager(); refreshRateManager.setRefreshRateOperator(OpenGLDisplayPlugin::getRefreshRateOperator()); bool isHmd = newDisplayPlugin->isHmd(); - RefreshRateManager::UXMode uxMode = isHmd ? RefreshRateManager::UXMode::HMD : + RefreshRateManager::UXMode uxMode = isHmd ? RefreshRateManager::UXMode::VR : RefreshRateManager::UXMode::DESKTOP; refreshRateManager.setUXMode(uxMode); diff --git a/interface/src/RefreshRateManager.cpp b/interface/src/RefreshRateManager.cpp index d3e0b102ab..26e887174a 100644 --- a/interface/src/RefreshRateManager.cpp +++ b/interface/src/RefreshRateManager.cpp @@ -26,24 +26,28 @@ static const std::array REFRESH_RATE_REGIME_TO_STRING = - { { "Running", "Unfocus", "Minimized", "StartUp", "ShutDown", "Inactive" } }; + { { "FocusActive", "FocusInactive", "Unfocus", "Minimized", "StartUp", "ShutDown" } }; static const std::array UX_MODE_TO_STRING = - { { "Desktop", "HMD" } }; + { { "Desktop", "VR" } }; static const std::map REFRESH_RATE_PROFILE_FROM_STRING = { { "Eco", RefreshRateManager::RefreshRateProfile::ECO }, { "Interactive", RefreshRateManager::RefreshRateProfile::INTERACTIVE }, { "Realtime", RefreshRateManager::RefreshRateProfile::REALTIME } }; + +// Porfile regimes are: +// { { "Focus_Active", "Focus_Inactive", "Unfocus", "Minimized", "StartUp", "ShutDown" } } + static const std::array ECO_PROFILE = - { { 5, 5, 2, 30, 30, 4 } }; + { { 15, 5, 5, 2, 30, 30 } }; static const std::array INTERACTIVE_PROFILE = - { { 25, 5, 2, 30, 30, 20 } }; + { { 30, 20, 5, 2, 30, 30 } }; static const std::array REALTIME_PROFILE = - { { 60, 10, 2, 30, 30, 30} }; + { { 60, 60, 10, 2, 30, 30} }; static const std::array, RefreshRateManager::RefreshRateProfile::PROFILE_NUM> REFRESH_RATE_PROFILES = { { ECO_PROFILE, INTERACTIVE_PROFILE, REALTIME_PROFILE } }; @@ -74,8 +78,8 @@ RefreshRateManager::RefreshRateManager() { _inactiveTimer->setSingleShot(true); QObject::connect(_inactiveTimer.get(), &QTimer::timeout, [&] { if (_uxMode == RefreshRateManager::UXMode::DESKTOP && - getRefreshRateRegime() == RefreshRateManager::RefreshRateRegime::RUNNING) { - setRefreshRateRegime(RefreshRateManager::RefreshRateRegime::INACTIVE); + getRefreshRateRegime() == RefreshRateManager::RefreshRateRegime::FOCUS_ACTIVE) { + setRefreshRateRegime(RefreshRateManager::RefreshRateRegime::FOCUS_INACTIVE); } }); } @@ -83,7 +87,7 @@ RefreshRateManager::RefreshRateManager() { void RefreshRateManager::resetInactiveTimer() { if (_uxMode == RefreshRateManager::UXMode::DESKTOP) { _inactiveTimer->start(); - setRefreshRateRegime(RefreshRateManager::RefreshRateRegime::RUNNING); + setRefreshRateRegime(RefreshRateManager::RefreshRateRegime::FOCUS_ACTIVE); } } @@ -100,7 +104,7 @@ void RefreshRateManager::setRefreshRateProfile(RefreshRateManager::RefreshRatePr RefreshRateManager::RefreshRateProfile RefreshRateManager::getRefreshRateProfile() const { RefreshRateManager::RefreshRateProfile profile = RefreshRateManager::RefreshRateProfile::REALTIME; - if (getUXMode() != RefreshRateManager::UXMode::HMD) { + if (getUXMode() != RefreshRateManager::UXMode::VR) { profile =(RefreshRateManager::RefreshRateProfile) _refreshRateModeLock.resultWithReadLock([&] { return _refreshRateMode.get(); }); @@ -110,7 +114,7 @@ RefreshRateManager::RefreshRateProfile RefreshRateManager::getRefreshRateProfile } RefreshRateManager::RefreshRateRegime RefreshRateManager::getRefreshRateRegime() const { - return getUXMode() == RefreshRateManager::UXMode::HMD ? RefreshRateManager::RefreshRateRegime::RUNNING : + return getUXMode() == RefreshRateManager::UXMode::VR ? RefreshRateManager::RefreshRateRegime::FOCUS_ACTIVE : _refreshRateRegime; } @@ -133,7 +137,7 @@ void RefreshRateManager::updateRefreshRateController() const { if (_refreshRateOperator) { int targetRefreshRate; if (_uxMode == RefreshRateManager::UXMode::DESKTOP) { - if (_refreshRateRegime == RefreshRateManager::RefreshRateRegime::RUNNING && + if (_refreshRateRegime == RefreshRateManager::RefreshRateRegime::FOCUS_ACTIVE && _refreshRateProfile == RefreshRateManager::RefreshRateProfile::INTERACTIVE) { targetRefreshRate = getInteractiveRefreshRate(); } else { diff --git a/interface/src/RefreshRateManager.h b/interface/src/RefreshRateManager.h index f28941e982..049cc46938 100644 --- a/interface/src/RefreshRateManager.h +++ b/interface/src/RefreshRateManager.h @@ -30,18 +30,18 @@ public: }; enum RefreshRateRegime { - RUNNING = 0, + FOCUS_ACTIVE = 0, + FOCUS_INACTIVE, UNFOCUS, MINIMIZED, STARTUP, SHUTDOWN, - INACTIVE, REGIME_NUM }; enum UXMode { DESKTOP = 0, - HMD, + VR, UX_NUM }; From 531ec142537a6c2ec4174a907c7e5588fd9c1022 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Thu, 2 May 2019 00:54:00 -0700 Subject: [PATCH 3/5] Applying my own comments, and refining the profile values --- interface/src/RefreshRateManager.cpp | 60 +++++++++++----------------- interface/src/RefreshRateManager.h | 11 ++--- 2 files changed, 27 insertions(+), 44 deletions(-) diff --git a/interface/src/RefreshRateManager.cpp b/interface/src/RefreshRateManager.cpp index 26e887174a..2eea89fc4b 100644 --- a/interface/src/RefreshRateManager.cpp +++ b/interface/src/RefreshRateManager.cpp @@ -20,7 +20,7 @@ #include -static const int HMD_TARGET_RATE = 90; +static const int VR_TARGET_RATE = 90; static const std::array REFRESH_RATE_PROFILE_TO_STRING = { { "Eco", "Interactive", "Realtime" } }; @@ -38,13 +38,13 @@ static const std::map REFRE // Porfile regimes are: -// { { "Focus_Active", "Focus_Inactive", "Unfocus", "Minimized", "StartUp", "ShutDown" } } +// { { "FocusActive", "FocusInactive", "Unfocus", "Minimized", "StartUp", "ShutDown" } } static const std::array ECO_PROFILE = - { { 15, 5, 5, 2, 30, 30 } }; + { { 20, 10, 5, 2, 30, 30 } }; static const std::array INTERACTIVE_PROFILE = - { { 30, 20, 5, 2, 30, 30 } }; + { { 30, 20, 10, 2, 30, 30 } }; static const std::array REALTIME_PROFILE = { { 60, 60, 10, 2, 30, 30} }; @@ -73,14 +73,11 @@ std::string RefreshRateManager::uxModeToString(RefreshRateManager::RefreshRateMa } RefreshRateManager::RefreshRateManager() { - _refreshRateProfile = (RefreshRateManager::RefreshRateProfile) _refreshRateMode.get(); + _refreshRateProfile = (RefreshRateManager::RefreshRateProfile) _refreshRateProfileSetting.get(); _inactiveTimer->setInterval(INACTIVE_TIMER_LIMIT); _inactiveTimer->setSingleShot(true); QObject::connect(_inactiveTimer.get(), &QTimer::timeout, [&] { - if (_uxMode == RefreshRateManager::UXMode::DESKTOP && - getRefreshRateRegime() == RefreshRateManager::RefreshRateRegime::FOCUS_ACTIVE) { - setRefreshRateRegime(RefreshRateManager::RefreshRateRegime::FOCUS_INACTIVE); - } + toggleInactive(); }); } @@ -91,11 +88,18 @@ void RefreshRateManager::resetInactiveTimer() { } } +void RefreshRateManager::toggleInactive() { + if (_uxMode == RefreshRateManager::UXMode::DESKTOP && + getRefreshRateRegime() == RefreshRateManager::RefreshRateRegime::FOCUS_ACTIVE) { + setRefreshRateRegime(RefreshRateManager::RefreshRateRegime::FOCUS_INACTIVE); + } +} + void RefreshRateManager::setRefreshRateProfile(RefreshRateManager::RefreshRateProfile refreshRateProfile) { if (_refreshRateProfile != refreshRateProfile) { - _refreshRateModeLock.withWriteLock([&] { + _refreshRateProfileSettingLock.withWriteLock([&] { _refreshRateProfile = refreshRateProfile; - _refreshRateMode.set((int) refreshRateProfile); + _refreshRateProfileSetting.set((int) refreshRateProfile); }); updateRefreshRateController(); } @@ -105,8 +109,8 @@ RefreshRateManager::RefreshRateProfile RefreshRateManager::getRefreshRateProfile RefreshRateManager::RefreshRateProfile profile = RefreshRateManager::RefreshRateProfile::REALTIME; if (getUXMode() != RefreshRateManager::UXMode::VR) { - profile =(RefreshRateManager::RefreshRateProfile) _refreshRateModeLock.resultWithReadLock([&] { - return _refreshRateMode.get(); + profile =(RefreshRateManager::RefreshRateProfile) _refreshRateProfileSettingLock.resultWithReadLock([&] { + return _refreshRateProfileSetting.get(); }); } @@ -114,8 +118,11 @@ RefreshRateManager::RefreshRateProfile RefreshRateManager::getRefreshRateProfile } RefreshRateManager::RefreshRateRegime RefreshRateManager::getRefreshRateRegime() const { - return getUXMode() == RefreshRateManager::UXMode::VR ? RefreshRateManager::RefreshRateRegime::FOCUS_ACTIVE : - _refreshRateRegime; + if (getUXMode() == RefreshRateManager::UXMode::VR) { + return RefreshRateManager::RefreshRateRegime::FOCUS_ACTIVE; + } else { + return _refreshRateRegime; + } } void RefreshRateManager::setRefreshRateRegime(RefreshRateManager::RefreshRateRegime refreshRateRegime) { @@ -137,31 +144,12 @@ void RefreshRateManager::updateRefreshRateController() const { if (_refreshRateOperator) { int targetRefreshRate; if (_uxMode == RefreshRateManager::UXMode::DESKTOP) { - if (_refreshRateRegime == RefreshRateManager::RefreshRateRegime::FOCUS_ACTIVE && - _refreshRateProfile == RefreshRateManager::RefreshRateProfile::INTERACTIVE) { - targetRefreshRate = getInteractiveRefreshRate(); - } else { - targetRefreshRate = REFRESH_RATE_PROFILES[_refreshRateProfile][_refreshRateRegime]; - } + targetRefreshRate = REFRESH_RATE_PROFILES[_refreshRateProfile][_refreshRateRegime]; } else { - targetRefreshRate = HMD_TARGET_RATE; + targetRefreshRate = VR_TARGET_RATE; } _refreshRateOperator(targetRefreshRate); _activeRefreshRate = targetRefreshRate; } } - -void RefreshRateManager::setInteractiveRefreshRate(int refreshRate) { - _refreshRateLock.withWriteLock([&] { - _interactiveRefreshRate.set(refreshRate); - }); - updateRefreshRateController(); -} - - -int RefreshRateManager::getInteractiveRefreshRate() const { - return _refreshRateLock.resultWithReadLock([&] { - return _interactiveRefreshRate.get(); - }); -} diff --git a/interface/src/RefreshRateManager.h b/interface/src/RefreshRateManager.h index 049cc46938..6ded8c8869 100644 --- a/interface/src/RefreshRateManager.h +++ b/interface/src/RefreshRateManager.h @@ -60,10 +60,9 @@ public: void setRefreshRateOperator(std::function refreshRateOperator) { _refreshRateOperator = refreshRateOperator; } int getActiveRefreshRate() const { return _activeRefreshRate; } void updateRefreshRateController() const; - void setInteractiveRefreshRate(int refreshRate); - int getInteractiveRefreshRate() const; void resetInactiveTimer(); + void toggleInactive(); static std::string refreshRateProfileToString(RefreshRateProfile refreshRateProfile); static RefreshRateProfile refreshRateProfileFromString(std::string refreshRateProfile); @@ -71,20 +70,16 @@ public: static std::string refreshRateRegimeToString(RefreshRateRegime refreshRateRegime); private: - mutable ReadWriteLockable _refreshRateLock; - mutable ReadWriteLockable _refreshRateModeLock; - mutable int _activeRefreshRate { 20 }; RefreshRateProfile _refreshRateProfile { RefreshRateProfile::INTERACTIVE}; RefreshRateRegime _refreshRateRegime { RefreshRateRegime::STARTUP }; UXMode _uxMode; - Setting::Handle _interactiveRefreshRate { "interactiveRefreshRate", 20}; - Setting::Handle _refreshRateMode { "refreshRateProfile", INTERACTIVE }; + mutable ReadWriteLockable _refreshRateProfileSettingLock; + Setting::Handle _refreshRateProfileSetting { "refreshRateProfile", RefreshRateProfile::INTERACTIVE }; std::function _refreshRateOperator { nullptr }; - std::shared_ptr _inactiveTimer { std::make_shared() }; }; From 7f22ac1be4f82cd5941d839955f3e502b2d61968 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Thu, 2 May 2019 08:57:19 -0700 Subject: [PATCH 4/5] FIxing a warning on unix --- interface/src/Application.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 18b76b58a6..9b16e8ea53 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4111,7 +4111,6 @@ bool Application::eventFilter(QObject* object, QEvent* event) { auto eventType = event->type(); if (eventType == QEvent::KeyPress || eventType == QEvent::KeyRelease || eventType == QEvent::MouseMove) { - RefreshRateManager& refreshRateManager = getRefreshRateManager(); getRefreshRateManager().resetInactiveTimer(); } From 02530bdd022384ab38a40ed2c5e4be7b6cf26e3a Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Thu, 2 May 2019 14:51:45 -0700 Subject: [PATCH 5/5] Refining the test to resetInactiveTimer --- interface/src/RefreshRateManager.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/interface/src/RefreshRateManager.cpp b/interface/src/RefreshRateManager.cpp index 2eea89fc4b..0c5bcd405e 100644 --- a/interface/src/RefreshRateManager.cpp +++ b/interface/src/RefreshRateManager.cpp @@ -83,8 +83,11 @@ RefreshRateManager::RefreshRateManager() { void RefreshRateManager::resetInactiveTimer() { if (_uxMode == RefreshRateManager::UXMode::DESKTOP) { - _inactiveTimer->start(); - setRefreshRateRegime(RefreshRateManager::RefreshRateRegime::FOCUS_ACTIVE); + auto regime = getRefreshRateRegime(); + if (regime == RefreshRateRegime::FOCUS_ACTIVE || regime == RefreshRateRegime::FOCUS_INACTIVE) { + _inactiveTimer->start(); + setRefreshRateRegime(RefreshRateManager::RefreshRateRegime::FOCUS_ACTIVE); + } } }