experimental 120fps tui

This commit is contained in:
Boof2015
2026-08-15 18:49:48 -04:00
parent 1bb096c231
commit 12ff657929
2 changed files with 29 additions and 4 deletions
+15 -4
View File
@@ -19,7 +19,7 @@ const std::vector<SettingDescriptor> kAppearanceSettings = {
const std::vector<SettingDescriptor> kGeneralSettings = {
{SettingId::InputTrim, "Input trim", "Applies gain before every analyzer."},
{SettingId::RefreshRate, "Refresh rate", "Controls how often the terminal display is published."},
{SettingId::RefreshRate, "Refresh rate", "120 FPS is experimental and depends heavily on the terminal."},
};
const std::vector<SettingDescriptor> kSpectrumSettings = {
@@ -305,7 +305,9 @@ TuiSettings normalizeSettings(TuiSettings settings) {
}), settings.themeId.end());
if (settings.themeId.empty()) settings.themeId = "Default";
settings.inputTrimDb = std::clamp(snap(settings.inputTrimDb, 0.5f), -12.0f, 12.0f);
settings.refreshRate = settings.refreshRate <= 30 ? 30 : 60;
settings.refreshRate = settings.refreshRate <= 30
? 30
: settings.refreshRate <= 60 ? 60 : 120;
settings.rackLayout = normalizeRackLayout(std::move(settings.rackLayout));
settings.spectrumTiltDbPerOctave = std::clamp(
snap(settings.spectrumTiltDbPerOctave, 0.1f), -2.0f, 8.0f);
@@ -430,7 +432,8 @@ std::string settingValue(const TuiSettings& settings, SettingId setting) {
return (settings.inputTrimDb > 0.0f ? "+" : "") +
trimFloat(settings.inputTrimDb, 1) + " dB";
case SettingId::RefreshRate:
return std::to_string(settings.refreshRate) + " FPS";
return std::to_string(settings.refreshRate) + " FPS" +
(settings.refreshRate == 120 ? " (experimental)" : "");
case SettingId::SpectrumPeakReadout:
return boolValue(settings.spectrumPeakReadout);
case SettingId::SpectrumTilt:
@@ -503,7 +506,15 @@ bool adjustSetting(TuiSettings& settings, SettingId setting, int direction) {
settings.inputTrimDb += direction > 0 ? 0.5f : -0.5f;
break;
case SettingId::RefreshRate:
settings.refreshRate = settings.refreshRate == 60 ? 30 : 60;
if (direction > 0) {
settings.refreshRate = settings.refreshRate == 30
? 60
: settings.refreshRate == 60 ? 120 : 30;
} else {
settings.refreshRate = settings.refreshRate == 120
? 60
: settings.refreshRate == 60 ? 30 : 120;
}
break;
case SettingId::SpectrumPeakReadout:
settings.spectrumPeakReadout = !settings.spectrumPeakReadout;
+14
View File
@@ -477,6 +477,20 @@ void testSettingsModelAndPersistence() {
Prism::Tui::settingsForPage(Prism::Tui::SettingsPage::General).size() == 2,
"settings should expose shallow category pages");
Prism::Tui::TuiSettings adjusted;
require(Prism::Tui::adjustSetting(
adjusted, Prism::Tui::SettingId::RefreshRate, 1) &&
adjusted.refreshRate == 120 &&
Prism::Tui::settingValue(
adjusted, Prism::Tui::SettingId::RefreshRate).find("experimental") !=
std::string::npos,
"refresh settings should expose an explicit experimental 120 FPS mode");
require(Prism::Tui::adjustSetting(
adjusted, Prism::Tui::SettingId::RefreshRate, 1) &&
adjusted.refreshRate == 30 &&
Prism::Tui::adjustSetting(
adjusted, Prism::Tui::SettingId::RefreshRate, -1) &&
adjusted.refreshRate == 120,
"refresh settings should cycle through 30, 60, and 120 FPS in both directions");
require(Prism::Tui::adjustSetting(
adjusted, Prism::Tui::SettingId::InputTrim, 1) &&
adjusted.inputTrimDb == 0.5f,