diff --git a/src/core/file_sys/savedata_factory.cpp b/src/core/file_sys/savedata_factory.cpp index 0ba839ec14..c756734a43 100644 --- a/src/core/file_sys/savedata_factory.cpp +++ b/src/core/file_sys/savedata_factory.cpp @@ -57,11 +57,7 @@ std::string GetFutureSaveDataPath(SaveDataSpaceId space_id, SaveDataType type, u SaveDataFactory::SaveDataFactory(Core::System& system_, ProgramId program_id_, VirtualDir save_directory_) - : system{system_}, program_id{program_id_}, dir{std::move(save_directory_)} { - // Delete all temporary storages - // On hardware, it is expected that temporary storage be empty at first use. - dir->DeleteSubdirectoryRecursive("temp"); -} + : system{system_}, program_id{program_id_}, dir{std::move(save_directory_)} {} SaveDataFactory::~SaveDataFactory() = default; diff --git a/src/core/hle/service/filesystem/filesystem.cpp b/src/core/hle/service/filesystem/filesystem.cpp index 20e050c8a8..5e3822d29f 100644 --- a/src/core/hle/service/filesystem/filesystem.cpp +++ b/src/core/hle/service/filesystem/filesystem.cpp @@ -336,6 +336,10 @@ Result FileSystemController::RegisterProcess( ProcessId process_id, ProgramId program_id, std::shared_ptr&& romfs_factory) { std::scoped_lock lk{registration_lock}; + if (registrations.empty()) { + const auto save_directory = system.GetFilesystem()->OpenDirectory(Common::FS::GetEdenPathString(Common::FS::EdenPath::SaveDir), FileSys::OpenMode::ReadWrite); + if (save_directory != nullptr) save_directory->DeleteSubdirectoryRecursive("temp"); + } registrations.emplace(process_id, Registration{ .program_id = program_id,