From 9915d4a580cd699279d8ac0f3429757e705a8f30 Mon Sep 17 00:00:00 2001 From: xbzk Date: Mon, 7 Sep 2026 16:51:10 -0300 Subject: [PATCH] [fs] moved temp folder cleanup upstream (per-application level) to avoid per-program retrigger) --- src/core/file_sys/savedata_factory.cpp | 6 +----- src/core/hle/service/filesystem/filesystem.cpp | 4 ++++ 2 files changed, 5 insertions(+), 5 deletions(-) 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,