diff --git a/pcsx2/MemoryCardFile.cpp b/pcsx2/MemoryCardFile.cpp index 70f7310f18..802c98de56 100644 --- a/pcsx2/MemoryCardFile.cpp +++ b/pcsx2/MemoryCardFile.cpp @@ -620,11 +620,8 @@ uint FileMcd_ConvertToSlot(uint port, uint slot) return slot + 4; // multitap 2 } -void FileMcd_EmuOpen() +void FileMcd_SetType() { - if(FileMcd_Open) - return; - FileMcd_Open = true; // detect inserted memory card types for (uint slot = 0; slot < 8; ++slot) { @@ -643,6 +640,14 @@ void FileMcd_EmuOpen() EmuConfig.Mcd[slot].Type = type; } } +} + +void FileMcd_EmuOpen() +{ + if(FileMcd_Open) + return; + FileMcd_Open = true; + Mcd::impl.Open(); Mcd::implFolder.SetFiltering(EmuConfig.McdFolderAutoManage); @@ -667,9 +672,9 @@ void FileMcd_Reopen(std::string new_serial) { Console.WriteLn("Reopening memory cards..."); FileMcd_EmuClose(); - FileMcd_EmuOpen(); - + FileMcd_SetType(); sioSetGameSerial(new_serial); + FileMcd_EmuOpen(); } s32 FileMcd_IsPresent(uint port, uint slot) diff --git a/pcsx2/MemoryCardFile.h b/pcsx2/MemoryCardFile.h index ea95f0589c..91122538f4 100644 --- a/pcsx2/MemoryCardFile.h +++ b/pcsx2/MemoryCardFile.h @@ -45,6 +45,7 @@ extern bool FileMcd_IsMultitapSlot(uint slot); extern std::string FileMcd_GetDefaultName(uint slot); uint FileMcd_ConvertToSlot(uint port, uint slot); +void FileMcd_SetType(); void FileMcd_EmuOpen(); void FileMcd_EmuClose(); void FileMcd_CancelEject(); diff --git a/pcsx2/MemoryCardFolder.cpp b/pcsx2/MemoryCardFolder.cpp index ae02ff75bc..46eb978f70 100644 --- a/pcsx2/MemoryCardFolder.cpp +++ b/pcsx2/MemoryCardFolder.cpp @@ -234,6 +234,7 @@ void FolderMemoryCard::Close(bool flush) m_oldDataCache.clear(); m_lastAccessedFile.CloseAll(); m_fileMetadataQuickAccess.clear(); + m_isEnabled = false; } bool FolderMemoryCard::ReIndex(bool enableFiltering, const std::string& filter) @@ -2394,5 +2395,7 @@ bool FolderMemoryCardAggregator::ReIndex(uint slot, const bool enableFiltering, return true; } + SetFiltering(enableFiltering); + m_lastKnownFilter = filter; return false; }