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
48 * <tr><td><code>"Interactive"</code></td><td>Medium refresh rate, which is reduced when Interface doesn't have focus or is 48 * <tr><td><code>"Interactive"</code></td><td>Medium refresh rate, which is reduced when Interface doesn't have focus or is
49 * minimized.</td></tr>49 * minimized.</td></tr>
50 * <tr><td><code>"Realtime"</code></td><td>High refresh rate, even when Interface doesn't have focus or is minimized.50 * <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.
51 * </tbody>52 * </tbody>
52 * </table>53 * </table>
53 * @typedef {string} RefreshRateProfileName54 * @typedef {string} RefreshRateProfileName
54 */55 */
55static const std::array<std::string, RefreshRateManager::RefreshRateProfile::PROFILE_NUM> REFRESH_RATE_PROFILE_TO_STRING =56static const std::array<std::string, RefreshRateManager::RefreshRateProfile::PROFILE_NUM> REFRESH_RATE_PROFILE_TO_STRING =
56 { { "Eco", "Interactive", "Realtime" } };57 { { "Eco", "Interactive", "Realtime", "Custom" } };
57 58
58/*@jsdoc59/*@jsdoc
59 * <p>Interface states that affect the refresh rate.</p>60 * <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
108 { { 30, 20, 10, 2, 30, 30 } };109 { { 30, 20, 10, 2, 30, 30 } };
109 110
110static const std::array<int, RefreshRateManager::RefreshRateRegime::REGIME_NUM> REALTIME_PROFILE =111static const std::array<int, RefreshRateManager::RefreshRateRegime::REGIME_NUM> REALTIME_PROFILE =
111 { { 60, 60, 60, 2, 30, 30} };112 { { 60, 60, 60, 2, 30, 30 } };
112 113
113static const std::array<std::array<int, RefreshRateManager::RefreshRateRegime::REGIME_NUM>, RefreshRateManager::RefreshRateProfile::PROFILE_NUM> REFRESH_RATE_PROFILES =114static const std::array<int, RefreshRateManager::RefreshRateRegime::REGIME_NUM> CUSTOM_PROFILE = REALTIME_PROFILE; // derived from settings and modified by scripts below
114 { { ECO_PROFILE, INTERACTIVE_PROFILE, REALTIME_PROFILE } };115
116static 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 } };
115 118
116 119
117static const int INACTIVE_TIMER_LIMIT = 3000;120static const int INACTIVE_TIMER_LIMIT = 3000;
@@ -135,6 +138,10 @@ std::string RefreshRateManager::uxModeToString(RefreshRateManager::RefreshRateMa · 17 unmodified lines
135 138
136RefreshRateManager::RefreshRateManager() {139RefreshRateManager::RefreshRateManager() {
137 _refreshRateProfile = (RefreshRateManager::RefreshRateProfile) _refreshRateProfileSetting.get();140 _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
138 _inactiveTimer->setInterval(INACTIVE_TIMER_LIMIT);145 _inactiveTimer->setInterval(INACTIVE_TIMER_LIMIT);
139 _inactiveTimer->setSingleShot(true);146 _inactiveTimer->setSingleShot(true);
140 QObject::connect(_inactiveTimer.get(), &QTimer::timeout, [&] {147 QObject::connect(_inactiveTimer.get(), &QTimer::timeout, [&] {
@@ -169,23 +176,23 @@ void RefreshRateManager::setRefreshRateProfile(RefreshRateManager::RefreshRatePr · 28 unmodified lines
169 }176 }
170}177}
171 178
172int RefreshRateManager::getCustomRefreshRate(RefreshRateRegime regime)179int RefreshRateManager::getCustomRefreshRate(RefreshRateRegime regime) {
173{180 if (isValidRefreshRateRegime(regime)) {
174 Q_ASSERT(regime >= 0 && regime < RefreshRateRegime::REGIME_NUM);181 return REFRESH_RATE_PROFILES[RefreshRateProfile::CUSTOM][regime];
175 if (regime < 0 && regime >= RefreshRateRegime::REGIME_NUM)182 }
176 return -1;
177 183
178 return _customProfile[regime];184 return 0;
179}185}
180 186
181int RefreshRateManager::setCustomRefreshRate(RefreshRateRegime regime, int value)187void RefreshRateManager::setCustomRefreshRate(RefreshRateRegime regime, int value) {
182{188 value = std::max(value, 1);
183 Q_ASSERT(regime >= 0 && regime < RefreshRateRegime::REGIME_NUM);189 if (isValidRefreshRateRegime(regime)) {
184 if (regime < 0 && regime >= RefreshRateRegime::REGIME_NUM)190 _refreshRateProfileSettingLock.withWriteLock([&] {
185 return -1;191 REFRESH_RATE_PROFILES[RefreshRateProfile::CUSTOM][regime] = value;
186 192 _customRefreshRateSettings[regime].set(value);
187 _customProfile[regime] = value;193 });
188 return 0;194 updateRefreshRateController();
195 }
189}196}
190 197
191RefreshRateManager::RefreshRateProfile RefreshRateManager::getRefreshRateProfile() const {198RefreshRateManager::RefreshRateProfile RefreshRateManager::getRefreshRateProfile() const {
@@ -211,7 +218,6 @@ void RefreshRateManager::setRefreshRateRegime(RefreshRateManager::RefreshRateReg · 19 unmodified lines
211 _refreshRateRegime = refreshRateRegime;218 _refreshRateRegime = refreshRateRegime;
212 updateRefreshRateController();219 updateRefreshRateController();
213 }220 }
214
215}221}
216 222
217void RefreshRateManager::setUXMode(RefreshRateManager::UXMode uxMode) {223void RefreshRateManager::setUXMode(RefreshRateManager::UXMode uxMode) {