History

cleanup, fixes, update QML

HifiExperiments committed 2 years ago

Commit 750c5f21 parent a6646d83 files · +184 −133Browse files

Showing the changes to interface/src/RefreshRateManager.cpp (1 of 3 files). Show all

Unified · Split

interface/src/RefreshRateManager.cpp+25−19
@@ -48,12 +48,13 @@ static const int VR_TARGET_RATE = 90; · 47 unmodified lines
4848 * <tr><td><code>"Interactive"</code></td><td>Medium refresh rate, which is reduced when Interface doesn't have focus or is
4949 * minimized.</td></tr>
5050 * <tr><td><code>"Realtime"</code></td><td>High refresh rate, even when Interface doesn't have focus or is minimized.
51+ * <tr><td><code>"Custom"</code></td><td>Custom refresh rate for full control over the refresh rate in all states.
5152 * </tbody>
5253 * </table>
5354 * @typedef {string} RefreshRateProfileName
5455 */
5556 static const std::array<std::string, RefreshRateManager::RefreshRateProfile::PROFILE_NUM> REFRESH_RATE_PROFILE_TO_STRING =
56− { { "Eco", "Interactive", "Realtime" } };
57+ { { "Eco", "Interactive", "Realtime", "Custom" } };
5758
5859 /*@jsdoc
5960 * <p>Interface states that affect the refresh rate.</p>
@@ -108,10 +109,12 @@ static const std::array<int, RefreshRateManager::RefreshRateRegime::REGIME_NUM> · 48 unmodified lines
108109 { { 30, 20, 10, 2, 30, 30 } };
109110
110111 static const std::array<int, RefreshRateManager::RefreshRateRegime::REGIME_NUM> REALTIME_PROFILE =
111− { { 60, 60, 60, 2, 30, 30} };
112+ { { 60, 60, 60, 2, 30, 30 } };
112113
113−static const std::array<std::array<int, RefreshRateManager::RefreshRateRegime::REGIME_NUM>, RefreshRateManager::RefreshRateProfile::PROFILE_NUM> REFRESH_RATE_PROFILES =
114− { { ECO_PROFILE, INTERACTIVE_PROFILE, REALTIME_PROFILE } };
114+static const std::array<int, RefreshRateManager::RefreshRateRegime::REGIME_NUM> CUSTOM_PROFILE = REALTIME_PROFILE; // derived from settings and modified by scripts below
115+
116+static std::array<std::array<int, RefreshRateManager::RefreshRateRegime::REGIME_NUM>, RefreshRateManager::RefreshRateProfile::PROFILE_NUM> REFRESH_RATE_PROFILES =
117+ { { ECO_PROFILE, INTERACTIVE_PROFILE, REALTIME_PROFILE, CUSTOM_PROFILE } };
115118
116119
117120 static const int INACTIVE_TIMER_LIMIT = 3000;
@@ -135,6 +138,10 @@ std::string RefreshRateManager::uxModeToString(RefreshRateManager::RefreshRateMa · 17 unmodified lines
135138
136139 RefreshRateManager::RefreshRateManager() {
137140 _refreshRateProfile = (RefreshRateManager::RefreshRateProfile) _refreshRateProfileSetting.get();
141+ for (size_t i = 0; i < _customRefreshRateSettings.size(); i++) {
142+ REFRESH_RATE_PROFILES[CUSTOM][i] = _customRefreshRateSettings[i].get();
143+ }
144+
138145 _inactiveTimer->setInterval(INACTIVE_TIMER_LIMIT);
139146 _inactiveTimer->setSingleShot(true);
140147 QObject::connect(_inactiveTimer.get(), &QTimer::timeout, [&] {
@@ -169,23 +176,23 @@ void RefreshRateManager::setRefreshRateProfile(RefreshRateManager::RefreshRatePr · 28 unmodified lines
169176 }
170177 }
171178
172−int RefreshRateManager::getCustomRefreshRate(RefreshRateRegime regime)
173−{
174− Q_ASSERT(regime >= 0 && regime < RefreshRateRegime::REGIME_NUM);
175− if (regime < 0 && regime >= RefreshRateRegime::REGIME_NUM)
176− return -1;
179+int RefreshRateManager::getCustomRefreshRate(RefreshRateRegime regime) {
180+ if (isValidRefreshRateRegime(regime)) {
181+ return REFRESH_RATE_PROFILES[RefreshRateProfile::CUSTOM][regime];
182+ }
177183
178− return _customProfile[regime];
184+ return 0;
179185 }
180186
181−int RefreshRateManager::setCustomRefreshRate(RefreshRateRegime regime, int value)
182−{
183− Q_ASSERT(regime >= 0 && regime < RefreshRateRegime::REGIME_NUM);
184− if (regime < 0 && regime >= RefreshRateRegime::REGIME_NUM)
185− return -1;
186−
187− _customProfile[regime] = value;
188− return 0;
187+void RefreshRateManager::setCustomRefreshRate(RefreshRateRegime regime, int value) {
188+ value = std::max(value, 1);
189+ if (isValidRefreshRateRegime(regime)) {
190+ _refreshRateProfileSettingLock.withWriteLock([&] {
191+ REFRESH_RATE_PROFILES[RefreshRateProfile::CUSTOM][regime] = value;
192+ _customRefreshRateSettings[regime].set(value);
193+ });
194+ updateRefreshRateController();
195+ }
189196 }
190197
191198 RefreshRateManager::RefreshRateProfile RefreshRateManager::getRefreshRateProfile() const {
@@ -211,7 +218,6 @@ void RefreshRateManager::setRefreshRateRegime(RefreshRateManager::RefreshRateReg · 19 unmodified lines
211218 _refreshRateRegime = refreshRateRegime;
212219 updateRefreshRateController();
213220 }
214−
215221 }
216222
217223 void RefreshRateManager::setUXMode(RefreshRateManager::UXMode uxMode) {