System: Always display OSD warning messages

I regretted what I did in f2720b98dd5c781a0b028968fc7fa166279047b1
less than a week after I pushed the change.

As a compromise, only display the unsafe settings warnings on startup.
This commit is contained in:
Stenzek 2025-01-22 18:23:10 +10:00
parent 4e588bb6c1
commit af58740f5d
No known key found for this signature in database

View File

@ -1220,7 +1220,7 @@ void System::LoadSettings(bool display_osd_messages)
Host::LoadSettings(si, lock); Host::LoadSettings(si, lock);
InputManager::ReloadSources(controller_si, lock); InputManager::ReloadSources(controller_si, lock);
InputManager::ReloadBindings(controller_si, hotkey_si); InputManager::ReloadBindings(controller_si, hotkey_si);
if (IsValidOrInitializing()) if (IsValidOrInitializing() && display_osd_messages)
WarnAboutUnsafeSettings(); WarnAboutUnsafeSettings();
// apply compatibility settings // apply compatibility settings
@ -4739,15 +4739,12 @@ void System::WarnAboutUnsafeSettings()
}; };
if (!g_settings.disable_all_enhancements) if (!g_settings.disable_all_enhancements)
{
if (ImGuiManager::IsShowingOSDMessages())
{ {
if (g_settings.cpu_overclock_active) if (g_settings.cpu_overclock_active)
{ {
append_format(ICON_EMOJI_WARNING, append_format(
TRANSLATE_FS("System", "CPU clock speed is set to {}% ({} / {}). This may crash games."), ICON_EMOJI_WARNING, TRANSLATE_FS("System", "CPU clock speed is set to {}% ({} / {}). This may crash games."),
g_settings.GetCPUOverclockPercent(), g_settings.cpu_overclock_numerator, g_settings.GetCPUOverclockPercent(), g_settings.cpu_overclock_numerator, g_settings.cpu_overclock_denominator);
g_settings.cpu_overclock_denominator);
} }
if (g_settings.cdrom_read_speedup != 1) if (g_settings.cdrom_read_speedup != 1)
{ {
@ -4756,8 +4753,8 @@ void System::WarnAboutUnsafeSettings()
speed = TRANSLATE_SV("System", "Maximum"); speed = TRANSLATE_SV("System", "Maximum");
else else
speed.format("{}x", g_settings.cdrom_read_speedup); speed.format("{}x", g_settings.cdrom_read_speedup);
append_format(ICON_EMOJI_WARNING, append_format(ICON_EMOJI_WARNING, TRANSLATE_FS("System", "CD-ROM read speedup set to {}. This may crash games."),
TRANSLATE_FS("System", "CD-ROM read speedup set to {}. This may crash games."), speed); speed);
} }
if (g_settings.cdrom_seek_speedup != 1) if (g_settings.cdrom_seek_speedup != 1)
{ {
@ -4766,13 +4763,12 @@ void System::WarnAboutUnsafeSettings()
speed = TRANSLATE_SV("System", "Maximum"); speed = TRANSLATE_SV("System", "Maximum");
else else
speed.format("{}x", g_settings.cdrom_seek_speedup); speed.format("{}x", g_settings.cdrom_seek_speedup);
append_format(ICON_EMOJI_WARNING, append_format(ICON_EMOJI_WARNING, TRANSLATE_FS("System", "CD-ROM seek speedup set to {}. This may crash games."),
TRANSLATE_FS("System", "CD-ROM seek speedup set to {}. This may crash games."), speed); speed);
} }
if (g_settings.gpu_force_video_timing != ForceVideoTimingMode::Disabled) if (g_settings.gpu_force_video_timing != ForceVideoTimingMode::Disabled)
{ {
append(ICON_FA_TV, append(ICON_FA_TV, TRANSLATE_SV("System", "Force frame timings is enabled. Games may run at incorrect speeds."));
TRANSLATE_SV("System", "Force frame timings is enabled. Games may run at incorrect speeds."));
} }
if (!g_settings.IsUsingSoftwareRenderer()) if (!g_settings.IsUsingSoftwareRenderer())
{ {
@ -4793,7 +4789,6 @@ void System::WarnAboutUnsafeSettings()
append(ICON_EMOJI_WARNING, append(ICON_EMOJI_WARNING,
TRANSLATE_SV("System", "8MB RAM is enabled, this may be incompatible with some games.")); TRANSLATE_SV("System", "8MB RAM is enabled, this may be incompatible with some games."));
} }
}
// Always display TC warning. // Always display TC warning.
if (g_settings.gpu_texture_cache) if (g_settings.gpu_texture_cache)
@ -4817,8 +4812,6 @@ void System::WarnAboutUnsafeSettings()
{ {
append(ICON_EMOJI_WARNING, TRANSLATE_SV("System", "Safe mode is enabled.")); append(ICON_EMOJI_WARNING, TRANSLATE_SV("System", "Safe mode is enabled."));
if (ImGuiManager::IsShowingOSDMessages())
{
#define APPEND_SUBMESSAGE(msg) \ #define APPEND_SUBMESSAGE(msg) \
do \ do \
{ \ { \
@ -4880,7 +4873,6 @@ void System::WarnAboutUnsafeSettings()
#undef APPEND_SUBMESSAGE #undef APPEND_SUBMESSAGE
} }
}
if (!g_settings.apply_compatibility_settings) if (!g_settings.apply_compatibility_settings)
{ {
@ -4897,7 +4889,10 @@ void System::WarnAboutUnsafeSettings()
messages.pop_back(); messages.pop_back();
LogUnsafeSettingsToConsole(messages); LogUnsafeSettingsToConsole(messages);
Host::AddKeyedOSDWarning("performance_settings_warning", std::string(messages.view()), Host::OSD_WARNING_DURATION);
// Force the message, but use a reduced duration if they have OSD messages disabled.
Host::AddKeyedOSDWarning("performance_settings_warning", std::string(messages.view()),
ImGuiManager::IsShowingOSDMessages() ? Host::OSD_INFO_DURATION : Host::OSD_QUICK_DURATION);
} }
else else
{ {