From d5a37706635b69892e96d0b16d41972afb7dc147 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Tue, 16 May 2023 01:22:40 +1000 Subject: [PATCH] System: Clear out memcard warnings when changing to valid config --- src/core/system.cpp | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/core/system.cpp b/src/core/system.cpp index b56eb30a8..28cf52f1f 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -2892,14 +2892,16 @@ std::unique_ptr System::GetMemoryCardForSlot(u32 slot, MemoryCardTyp if (is_running_psf) return nullptr; + std::string message_key = fmt::format("MemoryCard{}SharedWarning", slot); + switch (type) { case MemoryCardType::PerGame: { if (s_running_game_serial.empty()) { - Host::AddFormattedOSDMessage( - 5.0f, + Host::AddKeyedFormattedOSDMessage( + std::move(message_key), 5.0f, Host::TranslateString("System", "Per-game memory card cannot be used for slot %u as the running " "game has no code. Using shared card instead."), slot + 1u); @@ -2907,6 +2909,7 @@ std::unique_ptr System::GetMemoryCardForSlot(u32 slot, MemoryCardTyp } else { + Host::RemoveKeyedOSDMessage(std::move(message_key)); return MemoryCard::Open(g_settings.GetGameMemoryCardPath(s_running_game_serial.c_str(), slot)); } } @@ -2915,8 +2918,8 @@ std::unique_ptr System::GetMemoryCardForSlot(u32 slot, MemoryCardTyp { if (s_running_game_title.empty()) { - Host::AddFormattedOSDMessage( - 5.0f, + Host::AddKeyedFormattedOSDMessage( + std::move(message_key), 5.0f, Host::TranslateString("System", "Per-game memory card cannot be used for slot %u as the running " "game has no title. Using shared card instead."), slot + 1u); @@ -2924,6 +2927,7 @@ std::unique_ptr System::GetMemoryCardForSlot(u32 slot, MemoryCardTyp } else { + Host::RemoveKeyedOSDMessage(std::move(message_key)); return MemoryCard::Open(g_settings.GetGameMemoryCardPath( MemoryCard::SanitizeGameTitleForFileName(s_running_game_title).c_str(), slot)); } @@ -2935,8 +2939,8 @@ std::unique_ptr System::GetMemoryCardForSlot(u32 slot, MemoryCardTyp const std::string_view file_title(Path::GetFileTitle(display_name)); if (file_title.empty()) { - Host::AddFormattedOSDMessage( - 5.0f, + Host::AddKeyedFormattedOSDMessage( + std::move(message_key), 5.0f, Host::TranslateString("System", "Per-game memory card cannot be used for slot %u as the running " "game has no path. Using shared card instead."), slot + 1u); @@ -2944,6 +2948,7 @@ std::unique_ptr System::GetMemoryCardForSlot(u32 slot, MemoryCardTyp } else { + Host::RemoveKeyedOSDMessage(std::move(message_key)); return MemoryCard::Open( g_settings.GetGameMemoryCardPath(MemoryCard::SanitizeGameTitleForFileName(file_title).c_str(), slot)); } @@ -2951,15 +2956,22 @@ std::unique_ptr System::GetMemoryCardForSlot(u32 slot, MemoryCardTyp case MemoryCardType::Shared: { + Host::RemoveKeyedOSDMessage(std::move(message_key)); return MemoryCard::Open(g_settings.GetSharedMemoryCardPath(slot)); } case MemoryCardType::NonPersistent: + { + Host::RemoveKeyedOSDMessage(std::move(message_key)); return MemoryCard::Create(); + } case MemoryCardType::None: default: + { + Host::RemoveKeyedOSDMessage(std::move(message_key)); return nullptr; + } } }