diff --git a/pcsx2-qt/MainWindow.cpp b/pcsx2-qt/MainWindow.cpp index 090a2921ea..4a2f6eaabe 100644 --- a/pcsx2-qt/MainWindow.cpp +++ b/pcsx2-qt/MainWindow.cpp @@ -2225,11 +2225,11 @@ void MainWindow::setDisplayFullscreen(const std::string& fullscreen_mode) { if (g_host_display->SetFullscreen(true, width, height, refresh_rate)) { - Host::AddOSDMessage("Acquired exclusive fullscreen.", 10.0f); + Host::AddOSDMessage("Acquired exclusive fullscreen.", Host::OSD_INFO_DURATION); } else { - Host::AddOSDMessage("Failed to acquire exclusive fullscreen.", 10.0f); + Host::AddOSDMessage("Failed to acquire exclusive fullscreen.", Host::OSD_WARNING_DURATION); } } } diff --git a/pcsx2/CDVD/CDVDcommon.cpp b/pcsx2/CDVD/CDVDcommon.cpp index 20fcf54c39..17d4bbb889 100644 --- a/pcsx2/CDVD/CDVDcommon.cpp +++ b/pcsx2/CDVD/CDVDcommon.cpp @@ -413,7 +413,7 @@ bool DoCDVDopen() CDVD->getTD(0, &td); #ifdef PCSX2_CORE - Host::AddKeyedOSDMessage("BlockDumpCreate", fmt::format("Saving CDVD block dump to '{}'.", temp), 10.0f); + Host::AddKeyedOSDMessage("BlockDumpCreate", fmt::format("Saving CDVD block dump to '{}'.", temp), Host::OSD_INFO_DURATION); #endif blockDumpFile.Create(std::move(temp), 2); diff --git a/pcsx2/Frontend/Achievements.cpp b/pcsx2/Frontend/Achievements.cpp index 6a42675771..bd8047c40d 100644 --- a/pcsx2/Frontend/Achievements.cpp +++ b/pcsx2/Frontend/Achievements.cpp @@ -1468,7 +1468,7 @@ void Achievements::GameChanged(u32 crc) if (crc != 0) { Host::AddKeyedOSDMessage( - "retroachievements_disc_read_failed", "Failed to read executable from disc. Achievements disabled.", 10.0f); + "retroachievements_disc_read_failed", "Failed to read executable from disc. Achievements disabled.", Host::OSD_CRITICAL_ERROR_DURATION); } s_last_game_crc = 0; diff --git a/pcsx2/Frontend/CommonHotkeys.cpp b/pcsx2/Frontend/CommonHotkeys.cpp index 822471c169..94179b37ec 100644 --- a/pcsx2/Frontend/CommonHotkeys.cpp +++ b/pcsx2/Frontend/CommonHotkeys.cpp @@ -48,7 +48,7 @@ static void HotkeyAdjustTargetSpeed(double delta) gsUpdateFrequency(EmuConfig); GetMTGS().UpdateVSyncMode(); Host::AddIconOSDMessage("SpeedChanged", ICON_FA_CLOCK, - fmt::format("Target speed set to {:.0f}%.", std::round(EmuConfig.Framerate.NominalScalar * 100.0)), 5.0f); + fmt::format("Target speed set to {:.0f}%.", std::round(EmuConfig.Framerate.NominalScalar * 100.0)), Host::OSD_QUICK_DURATION); } static constexpr s32 CYCLE_SAVE_STATE_SLOTS = 10; @@ -80,13 +80,13 @@ static void HotkeyCycleSaveSlot(s32 delta) if (len > 0 && date_buf[len - 1] == '\n') date_buf[len - 1] = 0; - Host::AddIconOSDMessage( - "CycleSaveSlot", ICON_FA_SEARCH, fmt::format("Save slot {} selected (last save: {}).", s_current_save_slot, date_buf), 5.0f); + Host::AddIconOSDMessage("CycleSaveSlot", ICON_FA_SEARCH, + fmt::format("Save slot {} selected (last save: {}).", s_current_save_slot, date_buf), Host::OSD_QUICK_DURATION); } else { - Host::AddIconOSDMessage( - "CycleSaveSlot", ICON_FA_SEARCH, fmt::format("Save slot {} selected (no save yet).", s_current_save_slot), 5.0f); + Host::AddIconOSDMessage("CycleSaveSlot", ICON_FA_SEARCH, fmt::format("Save slot {} selected (no save yet).", s_current_save_slot), + Host::OSD_QUICK_DURATION); } } @@ -95,15 +95,16 @@ static void HotkeyLoadStateSlot(s32 slot) const u32 crc = VMManager::GetGameCRC(); if (crc == 0) { - Host::AddIconOSDMessage( - "LoadStateFromSlot", ICON_FA_EXCLAMATION_TRIANGLE, "Cannot load state from a slot without a game running.", 10.0f); + Host::AddIconOSDMessage("LoadStateFromSlot", ICON_FA_EXCLAMATION_TRIANGLE, "Cannot load state from a slot without a game running.", + Host::OSD_INFO_DURATION); return; } const std::string serial(VMManager::GetGameSerial()); if (!VMManager::HasSaveStateInSlot(serial.c_str(), crc, slot)) { - Host::AddIconOSDMessage("LoadStateFromSlot", ICON_FA_EXCLAMATION_TRIANGLE, fmt::format("No save state found in slot {}.", slot)); + Host::AddIconOSDMessage("LoadStateFromSlot", ICON_FA_EXCLAMATION_TRIANGLE, fmt::format("No save state found in slot {}.", slot), + Host::OSD_INFO_DURATION); return; } @@ -114,8 +115,8 @@ static void HotkeySaveStateSlot(s32 slot) { if (VMManager::GetGameCRC() == 0) { - Host::AddIconOSDMessage( - "SaveStateToSlot", ICON_FA_EXCLAMATION_TRIANGLE, "Cannot save state to a slot without a game running.", 10.0f); + Host::AddIconOSDMessage("SaveStateToSlot", ICON_FA_EXCLAMATION_TRIANGLE, "Cannot save state to a slot without a game running.", + Host::OSD_INFO_DURATION); return; } diff --git a/pcsx2/GS/GS.cpp b/pcsx2/GS/GS.cpp index fbcd2b1a57..eafcef2424 100644 --- a/pcsx2/GS/GS.cpp +++ b/pcsx2/GS/GS.cpp @@ -338,7 +338,7 @@ bool GSreopen(bool recreate_display, const Pcsx2Config::GSOptions& old_config) Host::AddKeyedOSDMessage("GSReopenFailed", fmt::format("Failed to open {} display, switching back to {}.", HostDisplay::RenderAPIToString(GetAPIForRenderer(GSConfig.Renderer)), - HostDisplay::RenderAPIToString(GetAPIForRenderer(old_config.Renderer)), 10.0f)); + HostDisplay::RenderAPIToString(GetAPIForRenderer(old_config.Renderer)), Host::OSD_CRITICAL_ERROR_DURATION)); GSConfig = old_config; } } @@ -358,7 +358,7 @@ bool GSreopen(bool recreate_display, const Pcsx2Config::GSOptions& old_config) } } - Host::AddKeyedOSDMessage("GSReopenFailed","Failed to reopen, restoring old configuration.", 10.0f); + Host::AddKeyedOSDMessage("GSReopenFailed","Failed to reopen, restoring old configuration.", Host::OSD_CRITICAL_ERROR_DURATION); GSConfig = old_config; if (!DoGSOpen(GSConfig.Renderer, basemem)) { @@ -1679,7 +1679,7 @@ void GSApp::SetConfig(const char* entry, int value) static void HotkeyAdjustUpscaleMultiplier(s32 delta) { const u32 new_multiplier = static_cast(std::clamp(static_cast(EmuConfig.GS.UpscaleMultiplier) + delta, 1, 8)); - Host::AddKeyedFormattedOSDMessage("UpscaleMultiplierChanged", 10.0f, "Upscale multiplier set to %ux.", new_multiplier); + Host::AddKeyedFormattedOSDMessage("UpscaleMultiplierChanged", Host::OSD_QUICK_DURATION, "Upscale multiplier set to %ux.", new_multiplier); EmuConfig.GS.UpscaleMultiplier = new_multiplier; // this is pretty slow. we only really need to flush the TC and recompile shaders. @@ -1690,7 +1690,7 @@ static void HotkeyAdjustUpscaleMultiplier(s32 delta) static void HotkeyAdjustZoom(double delta) { const double new_zoom = std::clamp(EmuConfig.GS.Zoom + delta, 1.0, 200.0); - Host::AddKeyedFormattedOSDMessage("ZoomChanged", 10.0f, "Zoom set to %.1f%%.", new_zoom); + Host::AddKeyedFormattedOSDMessage("ZoomChanged", Host::OSD_QUICK_DURATION, "Zoom set to %.1f%%.", new_zoom); EmuConfig.GS.Zoom = new_zoom; // no need to go through the full settings update for this @@ -1740,7 +1740,7 @@ BEGIN_HOTKEY_LIST(g_gs_hotkeys) // technically this races, but the worst that'll happen is one frame uses the old AR. EmuConfig.CurrentAspectRatio = static_cast((static_cast(EmuConfig.CurrentAspectRatio) + 1) % static_cast(AspectRatioType::MaxCount)); - Host::AddKeyedFormattedOSDMessage("CycleAspectRatio", 10.0f, "Aspect ratio set to '%s'.", Pcsx2Config::GSOptions::AspectRatioNames[static_cast(EmuConfig.CurrentAspectRatio)]); + Host::AddKeyedFormattedOSDMessage("CycleAspectRatio", Host::OSD_QUICK_DURATION, "Aspect ratio set to '%s'.", Pcsx2Config::GSOptions::AspectRatioNames[static_cast(EmuConfig.CurrentAspectRatio)]); }}, {"CycleMipmapMode", "Graphics", "Cycle Hardware Mipmapping", [](s32 pressed) { if (pressed) @@ -1750,7 +1750,7 @@ BEGIN_HOTKEY_LIST(g_gs_hotkeys) static constexpr std::array option_names = {{"Automatic", "Off", "Basic (Generated)", "Full (PS2)"}}; const HWMipmapLevel new_level = static_cast(((static_cast(EmuConfig.GS.HWMipmap) + 2) % CYCLE_COUNT) - 1); - Host::AddKeyedFormattedOSDMessage("CycleMipmapMode", 10.0f, "Hardware mipmapping set to '%s'.", option_names[static_cast(new_level) + 1]); + Host::AddKeyedFormattedOSDMessage("CycleMipmapMode", Host::OSD_QUICK_DURATION, "Hardware mipmapping set to '%s'.", option_names[static_cast(new_level) + 1]); EmuConfig.GS.HWMipmap = new_level; GetMTGS().RunOnGSThread([new_level]() { @@ -1777,7 +1777,7 @@ BEGIN_HOTKEY_LIST(g_gs_hotkeys) }}; const GSInterlaceMode new_mode = static_cast((static_cast(EmuConfig.GS.InterlaceMode) + 1) % static_cast(GSInterlaceMode::Count)); - Host::AddKeyedFormattedOSDMessage("CycleInterlaceMode", 10.0f, "Deinterlace mode set to '%s'.", option_names[static_cast(new_mode)]); + Host::AddKeyedFormattedOSDMessage("CycleInterlaceMode", Host::OSD_QUICK_DURATION, "Deinterlace mode set to '%s'.", option_names[static_cast(new_mode)]); EmuConfig.GS.InterlaceMode = new_mode; GetMTGS().RunOnGSThread([new_mode]() { GSConfig.InterlaceMode = new_mode; }); @@ -1794,7 +1794,9 @@ BEGIN_HOTKEY_LIST(g_gs_hotkeys) if (!pressed) { EmuConfig.GS.DumpReplaceableTextures = !EmuConfig.GS.DumpReplaceableTextures; - Host::AddKeyedOSDMessage("ToggleTextureReplacements", EmuConfig.GS.DumpReplaceableTextures ? "Texture dumping is now enabled." : "Texture dumping is now disabled.", 10.0f); + Host::AddKeyedOSDMessage("ToggleTextureReplacements", + EmuConfig.GS.DumpReplaceableTextures ? "Texture dumping is now enabled." : "Texture dumping is now disabled.", + Host::OSD_INFO_DURATION); GetMTGS().ApplySettings(); } }}, @@ -1802,7 +1804,9 @@ BEGIN_HOTKEY_LIST(g_gs_hotkeys) if (!pressed) { EmuConfig.GS.LoadTextureReplacements = !EmuConfig.GS.LoadTextureReplacements; - Host::AddKeyedOSDMessage("ToggleTextureReplacements", EmuConfig.GS.LoadTextureReplacements ? "Texture replacements are now enabled." : "Texture replacements are now disabled.", 10.0f); + Host::AddKeyedOSDMessage("ToggleTextureReplacements", + EmuConfig.GS.LoadTextureReplacements ? "Texture replacements are now enabled." : "Texture replacements are now disabled.", + Host::OSD_INFO_DURATION); GetMTGS().ApplySettings(); } }}, @@ -1811,11 +1815,11 @@ BEGIN_HOTKEY_LIST(g_gs_hotkeys) { if (!EmuConfig.GS.LoadTextureReplacements) { - Host::AddKeyedOSDMessage("ReloadTextureReplacements", "Texture replacements are not enabled.", 10.0f); + Host::AddKeyedOSDMessage("ReloadTextureReplacements", "Texture replacements are not enabled.", Host::OSD_INFO_DURATION); } else { - Host::AddKeyedOSDMessage("ReloadTextureReplacements", "Reloading texture replacements...", 10.0f); + Host::AddKeyedOSDMessage("ReloadTextureReplacements", "Reloading texture replacements...", Host::OSD_INFO_DURATION); GetMTGS().RunOnGSThread([]() { GSTextureReplacements::ReloadReplacementMap(); }); diff --git a/pcsx2/GS/Renderers/Common/GSRenderer.cpp b/pcsx2/GS/Renderers/Common/GSRenderer.cpp index 88094d54d6..47e2b62748 100644 --- a/pcsx2/GS/Renderers/Common/GSRenderer.cpp +++ b/pcsx2/GS/Renderers/Common/GSRenderer.cpp @@ -694,7 +694,7 @@ void GSRenderer::VSync(u32 field, bool registers_written) Host::AddKeyedOSDMessage("GSDump", fmt::format("Saving {0} GS dump {1} to '{2}'", (m_dump_frames == 1) ? "single frame" : "multi-frame", compression_str, - Path::GetFileName(m_dump->GetPath())), 10.0f); + Path::GetFileName(m_dump->GetPath())), Host::OSD_INFO_DURATION); } if (GSTexture* t = g_gs_device->GetCurrent()) @@ -703,11 +703,11 @@ void GSRenderer::VSync(u32 field, bool registers_written) if (t->Save(path)) { Host::AddKeyedOSDMessage("GSScreenshot", - fmt::format("Screenshot saved to '{}'.", Path::GetFileName(path)), 10.0f); + fmt::format("Screenshot saved to '{}'.", Path::GetFileName(path)), Host::OSD_INFO_DURATION); } else { - Host::AddFormattedOSDMessage(10.0f, "Failed to save screenshot to '%s'.", path.c_str()); + Host::AddFormattedOSDMessage(Host::OSD_ERROR_DURATION, "Failed to save screenshot to '%s'.", path.c_str()); } } @@ -718,7 +718,7 @@ void GSRenderer::VSync(u32 field, bool registers_written) const bool last = (m_dump_frames == 0); if (m_dump->VSync(field, last, m_regs)) { - Host::AddKeyedOSDMessage("GSDump", fmt::format("Saved GS dump to '{}'.", Path::GetFileName(m_dump->GetPath())), 10.0f); + Host::AddKeyedOSDMessage("GSDump", fmt::format("Saved GS dump to '{}'.", Path::GetFileName(m_dump->GetPath())), Host::OSD_INFO_DURATION); m_dump.reset(); } else if (!last) diff --git a/pcsx2/GS/Renderers/HW/GSRendererHW.cpp b/pcsx2/GS/Renderers/HW/GSRendererHW.cpp index 2231a3187c..22c3886211 100644 --- a/pcsx2/GS/Renderers/HW/GSRendererHW.cpp +++ b/pcsx2/GS/Renderers/HW/GSRendererHW.cpp @@ -214,7 +214,7 @@ void GSRendererHW::VSync(u32 field, bool registers_written) if (m_tc->GetHashCacheMemoryUsage() > 1024 * 1024 * 1024) { - Host::AddKeyedFormattedOSDMessage("HashCacheOverflow", 15.0f, "Hash cache has used %.2f MB of VRAM, disabling.", + Host::AddKeyedFormattedOSDMessage("HashCacheOverflow", Host::OSD_ERROR_DURATION, "Hash cache has used %.2f MB of VRAM, disabling.", static_cast(m_tc->GetHashCacheMemoryUsage()) / 1048576.0f); m_tc->RemoveAll(); g_gs_device->PurgePool(); diff --git a/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp b/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp index 80b92d3457..2337b0d65e 100644 --- a/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp +++ b/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp @@ -295,7 +295,8 @@ bool GSDeviceVK::CheckFeatures() if (!m_features.texture_barrier && !m_features.stencil_buffer) { Host::AddKeyedOSDMessage("GSDeviceVK_NoTextureBarrierOrStencilBuffer", - "Stencil buffers and texture barriers are both unavailable, this will break some graphical effects.", 10.0f); + "Stencil buffers and texture barriers are both unavailable, this will break some graphical effects.", + Host::OSD_WARNING_DURATION); } return true; @@ -469,7 +470,8 @@ bool GSDeviceVK::DownloadTexture(GSTexture* src, const GSVector4i& rect, GSTextu { m_warned_slow_spin = true; Host::AddKeyedOSDMessage("GSDeviceVK_NoCalibratedTimestamps", - "Spin GPU During Readbacks is enabled, but calibrated timestamps are unavailable. This might be really slow.", 10.0f); + "Spin GPU During Readbacks is enabled, but calibrated timestamps are unavailable. This might be really slow.", + Host::OSD_WARNING_DURATION); } } diff --git a/pcsx2/GameDatabase.cpp b/pcsx2/GameDatabase.cpp index c6991bd889..7df2acb068 100644 --- a/pcsx2/GameDatabase.cpp +++ b/pcsx2/GameDatabase.cpp @@ -677,7 +677,7 @@ u32 GameDatabaseSchema::GameEntry::applyGSHardwareFixes(Pcsx2Config::GSOptions& Host::AddKeyedOSDMessage("HWFixesWarning", fmt::format("Manual GS hardware renderer fixes are enabled, automatic fixes were not applied:\n{}", disabled_fixes), - 10.0f); + Host::OSD_ERROR_DURATION); } else { diff --git a/pcsx2/Host.h b/pcsx2/Host.h index e18770207c..0bd9df14bb 100644 --- a/pcsx2/Host.h +++ b/pcsx2/Host.h @@ -46,6 +46,13 @@ struct HostKeyEvent namespace Host { + /// Typical durations for OSD messages. + static constexpr float OSD_CRITICAL_ERROR_DURATION = 20.0f; + static constexpr float OSD_ERROR_DURATION = 15.0f; + static constexpr float OSD_WARNING_DURATION = 10.0f; + static constexpr float OSD_INFO_DURATION = 5.0f; + static constexpr float OSD_QUICK_DURATION = 2.5f; + /// Reads a file from the resources directory of the application. /// This may be outside of the "normal" filesystem on platforms such as Mac. std::optional> ReadResourceFile(const char* filename); diff --git a/pcsx2/MTGS.cpp b/pcsx2/MTGS.cpp index c8e94e71eb..399cbc36ad 100644 --- a/pcsx2/MTGS.cpp +++ b/pcsx2/MTGS.cpp @@ -28,6 +28,7 @@ #include "Host.h" #include "HostDisplay.h" +#include "IconsFontAwesome5.h" #ifndef PCSX2_CORE #include "gui/Dialogs/ModalPopups.h" @@ -986,8 +987,8 @@ void SysMtgsThread::SwitchRenderer(GSRendererType renderer, bool display_message if (display_message) { - Host::AddKeyedFormattedOSDMessage("SwitchRenderer", 10.0f, "Switching to %s renderer...", - Pcsx2Config::GSOptions::GetRendererName(renderer)); + Host::AddIconOSDMessage("SwitchRenderer", ICON_FA_MAGIC, fmt::format("Switching to {} renderer...", + Pcsx2Config::GSOptions::GetRendererName(renderer)), Host::OSD_INFO_DURATION); } RunOnGSThread([renderer]() { diff --git a/pcsx2/MemoryCardFile.cpp b/pcsx2/MemoryCardFile.cpp index 22fc656a24..7a4d1941b1 100644 --- a/pcsx2/MemoryCardFile.cpp +++ b/pcsx2/MemoryCardFile.cpp @@ -537,7 +537,8 @@ s32 FileMemoryCard::Save(uint slot, const u8* src, u32 adr, int size) if (elapsed > std::chrono::seconds(5)) { Host::AddIconOSDMessage(fmt::format("MemoryCardSave{}", slot), ICON_FA_SD_CARD, - fmt::format("Memory card '{}' was saved to storage.", Path::GetFileName(m_filenames[slot])), 10.0f); + fmt::format("Memory card '{}' was saved to storage.", Path::GetFileName(m_filenames[slot])), + Host::OSD_INFO_DURATION); last = std::chrono::system_clock::now(); } return 1; diff --git a/pcsx2/MemoryCardFolder.cpp b/pcsx2/MemoryCardFolder.cpp index ebe3873a9b..63bd274c38 100644 --- a/pcsx2/MemoryCardFolder.cpp +++ b/pcsx2/MemoryCardFolder.cpp @@ -1728,7 +1728,7 @@ void FolderMemoryCard::SetTimeLastReadToNow() void FolderMemoryCard::SetTimeLastWrittenToNow() { // CHANGE: this was local time milliseconds, which might be problematic... - m_timeLastWritten = std::time(nullptr);// wxGetLocalTimeMillis().GetValue(); + m_timeLastWritten = std::time(nullptr); // wxGetLocalTimeMillis().GetValue(); m_framesUntilFlush = FramesAfterWriteUntilFlush; } @@ -2080,7 +2080,7 @@ void FileAccessHelper::WriteIndex(const std::string& baseFolderName, MemoryCardF } else { - Console.Warning(fmt::format("(FileAccesHelper::WriteIndex()) '{}' has null parent",Path::Combine(baseFolderName,(const char*)entry->entry.data.name))); + Console.Warning(fmt::format("(FileAccesHelper::WriteIndex()) '{}' has null parent", Path::Combine(baseFolderName, (const char*)entry->entry.data.name))); } char cleanName[sizeof(entry->entry.data.name)]; @@ -2352,7 +2352,7 @@ s32 FolderMemoryCardAggregator::Save(uint slot, const u8* src, u32 adr, int size { const std::string_view filename = Path::GetFileName(m_cards[slot].GetFolderName()); Host::AddIconOSDMessage(fmt::format("MemoryCardSave{}", slot), ICON_FA_SD_CARD, - fmt::format("Memory card '{}' was saved to storage.", filename), 10.0f); + fmt::format("Memory card '{}' was saved to storage.", filename), Host::OSD_INFO_DURATION); } return saveResult; diff --git a/pcsx2/Sio.cpp b/pcsx2/Sio.cpp index 8ef767c732..f9e732d7be 100644 --- a/pcsx2/Sio.cpp +++ b/pcsx2/Sio.cpp @@ -27,6 +27,7 @@ #include "common/Timer.h" #include "Recording/InputRecording.h" +#include "IconsFontAwesome5.h" #define SIO0LOG_ENABLE 0 #define SIO2LOG_ENABLE 0 @@ -954,7 +955,7 @@ void AutoEject::Clear(size_t port, size_t slot) void AutoEject::SetAll() { - Host::AddKeyedFormattedOSDMessage("AutoEjectAllSet", 10.0f, "Force ejecting all memory cards"); + Host::AddIconOSDMessage("AutoEjectAllSet", ICON_FA_SD_CARD, "Force ejecting all memory cards.", Host::OSD_INFO_DURATION); for (size_t port = 0; port < SIO::PORTS; port++) { diff --git a/pcsx2/VMManager.cpp b/pcsx2/VMManager.cpp index 69237aafce..9b8fe703b3 100644 --- a/pcsx2/VMManager.cpp +++ b/pcsx2/VMManager.cpp @@ -622,11 +622,11 @@ void VMManager::LoadPatches(const std::string& serial, u32 crc, bool show_messag if (cheat_count > 0 || s_active_widescreen_patches > 0 || s_active_no_interlacing_patches > 0) { message += " are active."; - Host::AddIconOSDMessage("LoadPatches", ICON_FA_FILE_CODE, message, 5.0f); + Host::AddIconOSDMessage("LoadPatches", ICON_FA_FILE_CODE, message, Host::OSD_INFO_DURATION); } else if (show_messages_when_disabled) { - Host::AddIconOSDMessage("LoadPatches", ICON_FA_FILE_CODE, "No cheats or patches (widescreen, compatibility or others) are found / enabled.", 8.0f); + Host::AddIconOSDMessage("LoadPatches", ICON_FA_FILE_CODE, "No cheats or patches (widescreen, compatibility or others) are found / enabled.", Host::OSD_INFO_DURATION); } } } @@ -1203,7 +1203,7 @@ bool VMManager::DoSaveState(const char* filename, s32 slot_for_message, bool zip if (!FileSystem::RenamePath(filename, backup_filename.c_str())) { Host::AddIconOSDMessage(std::move(osd_key), ICON_FA_EXCLAMATION_TRIANGLE, - fmt::format("Failed to back up old save state {}.", Path::GetFileName(filename))); + fmt::format("Failed to back up old save state {}.", Path::GetFileName(filename)), Host::OSD_ERROR_DURATION); } } @@ -1225,7 +1225,8 @@ bool VMManager::DoSaveState(const char* filename, s32 slot_for_message, bool zip } catch (Exception::BaseException& e) { - Host::AddIconOSDMessage(std::move(osd_key), ICON_FA_EXCLAMATION_TRIANGLE, fmt::format("Failed to save save state: {}.", e.DiagMsg()), 15.0f); + Host::AddIconOSDMessage(std::move(osd_key), ICON_FA_EXCLAMATION_TRIANGLE, fmt::format("Failed to save save state: {}.", e.DiagMsg()), + Host::OSD_ERROR_DURATION); return false; } } @@ -1239,11 +1240,13 @@ void VMManager::ZipSaveState(std::unique_ptr elist, if (SaveState_ZipToDisk(std::move(elist), std::move(screenshot), filename)) { if (slot_for_message >= 0 && VMManager::HasValidVM()) - Host::AddIconOSDMessage(std::move(osd_key), ICON_FA_SAVE, fmt::format("State saved to slot {}.", slot_for_message), 10.0f); + Host::AddIconOSDMessage(std::move(osd_key), ICON_FA_SAVE, fmt::format("State saved to slot {}.", slot_for_message), + Host::OSD_QUICK_DURATION); } else { - Host::AddIconOSDMessage(std::move(osd_key), ICON_FA_EXCLAMATION_TRIANGLE, fmt::format("Failed to save save state to slot {}.", slot_for_message), 15.0f); + Host::AddIconOSDMessage(std::move(osd_key), ICON_FA_EXCLAMATION_TRIANGLE, fmt::format("Failed to save save state to slot {}.", slot_for_message), + Host::OSD_ERROR_DURATION); } DevCon.WriteLn("Zipping save state to '%s' took %.2f ms", filename, timer.GetTimeMilliseconds()); @@ -1342,7 +1345,7 @@ bool VMManager::LoadStateFromSlot(s32 slot) } #endif - Host::AddIconOSDMessage("LoadStateFromSlot", ICON_FA_FOLDER_OPEN, fmt::format("Loading state from slot {}...", slot), 5.0f); + Host::AddIconOSDMessage("LoadStateFromSlot", ICON_FA_FOLDER_OPEN, fmt::format("Loading state from slot {}...", slot), Host::OSD_QUICK_DURATION); return DoLoadState(filename.c_str()); } @@ -1405,19 +1408,20 @@ bool VMManager::ChangeDisc(CDVD_SourceType source, std::string path) if (result) { if (source == CDVD_SourceType::NoDisc) - Host::AddIconOSDMessage("ChangeDisc", ICON_FA_COMPACT_DISC, "Disc removed.", 5.0f); + Host::AddIconOSDMessage("ChangeDisc", ICON_FA_COMPACT_DISC, "Disc removed.", Host::OSD_INFO_DURATION); else - Host::AddIconOSDMessage("ChangeDisc", ICON_FA_COMPACT_DISC, fmt::format("Disc changed to '{}'.", display_name), 5.0f); + Host::AddIconOSDMessage("ChangeDisc", ICON_FA_COMPACT_DISC, fmt::format("Disc changed to '{}'.", display_name), Host::OSD_INFO_DURATION); } else { - Host::AddIconOSDMessage("ChangeDisc", ICON_FA_COMPACT_DISC, fmt::format("Failed to open new disc image '{}'. Reverting to old image.", display_name), 20.0f); + Host::AddIconOSDMessage("ChangeDisc", ICON_FA_COMPACT_DISC, fmt::format("Failed to open new disc image '{}'. Reverting to old image.", display_name), + Host::OSD_ERROR_DURATION); CDVDsys_ChangeSource(old_type); if (!old_path.empty()) CDVDsys_SetFile(old_type, std::move(old_path)); if (!DoCDVDopen()) { - Host::AddIconOSDMessage("ChangeDisc", ICON_FA_COMPACT_DISC, "Failed to switch back to old disc image. Removing disc.", 20.0f); + Host::AddIconOSDMessage("ChangeDisc", ICON_FA_COMPACT_DISC, "Failed to switch back to old disc image. Removing disc.", Host::OSD_CRITICAL_ERROR_DURATION); CDVDsys_ChangeSource(CDVD_SourceType::NoDisc); DoCDVDopen(); } @@ -1803,7 +1807,7 @@ void VMManager::EnforceAchievementsChallengeModeSettings() // Can't use cheats. if (EmuConfig.EnableCheats) { - Host::AddKeyedOSDMessage("ChallengeDisableCheats", "Cheats have been disabled due to achievements hardcore mode.", 10.0f); + Host::AddKeyedOSDMessage("ChallengeDisableCheats", "Cheats have been disabled due to achievements hardcore mode.", Host::OSD_WARNING_DURATION); EmuConfig.EnableCheats = false; } @@ -1863,7 +1867,7 @@ void VMManager::WarnAboutUnsafeSettings() { if (messages.back() == '\n') messages.pop_back(); - Host::AddKeyedOSDMessage("unsafe_settings_warning", std::move(messages), 10.0f); + Host::AddKeyedOSDMessage("unsafe_settings_warning", std::move(messages), Host::OSD_WARNING_DURATION); } else { @@ -1898,7 +1902,7 @@ void VMManager::WarnAboutUnsafeSettings() { if (messages.back() == '\n') messages.pop_back(); - Host::AddKeyedOSDMessage("performance_settings_warning", std::move(messages), 10.0f); + Host::AddKeyedOSDMessage("performance_settings_warning", std::move(messages), Host::OSD_WARNING_DURATION); } else {