System: Prevent save states while memory cards are being saved

This commit is contained in:
Stenzek 2024-05-25 17:23:18 +10:00
parent 8e5781266a
commit 328a3cd7af
No known key found for this signature in database
3 changed files with 10 additions and 4 deletions

View File

@ -110,8 +110,8 @@ static void HotkeySaveStateSlot(bool global, s32 slot)
Error error;
if (!System::SaveState(path.c_str(), &error, g_settings.create_save_state_backups))
{
Host::AddKeyedOSDMessage(
"SaveState",
Host::AddIconOSDMessage(
"SaveState", ICON_FA_EXCLAMATION_TRIANGLE,
fmt::format(TRANSLATE_FS("OSDMessage", "Failed to save state to slot {0}:\n{1}"), slot, error.GetDescription()),
Host::OSD_ERROR_DURATION);
}

View File

@ -1143,7 +1143,7 @@ void SaveStateSelectorUI::SaveCurrentSlot()
Error error;
if (!System::SaveState(path.c_str(), &error, g_settings.create_save_state_backups))
{
Host::AddKeyedOSDMessage("SaveState",
Host::AddIconOSDMessage("SaveState", ICON_FA_EXCLAMATION_TRIANGLE,
fmt::format(TRANSLATE_FS("OSDMessage", "Failed to save state to slot {0}:\n{1}"),
GetCurrentSlot(), error.GetDescription()),
Host::OSD_ERROR_DURATION);

View File

@ -1345,6 +1345,12 @@ bool System::LoadState(const char* filename, Error* error)
bool System::SaveState(const char* filename, Error* error, bool backup_existing_save)
{
if (IsSavingMemoryCards())
{
Error::SetStringView(error, TRANSLATE_SV("System", "Cannot save state while memory card is being saved."));
return false;
}
if (backup_existing_save && FileSystem::FileExists(filename))
{
Error backup_error;
@ -1365,7 +1371,7 @@ bool System::SaveState(const char* filename, Error* error, bool backup_existing_
error);
if (!stream)
{
Error::AddPrefixFmt(error, "Failed to save state to '{}': ", Path::GetFileName(filename));
Error::AddPrefixFmt(error, "Cannot open '{}': ", Path::GetFileName(filename));
return false;
}