From 531ec142537a6c2ec4174a907c7e5588fd9c1022 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Thu, 2 May 2019 00:54:00 -0700 Subject: [PATCH] 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() }; };