[fs] moved temp folder cleanup upstream (per-application level) to avoid per-program retrigger)

This commit is contained in:
xbzk
2026-09-07 16:51:10 -03:00
parent e5b8b10188
commit 03ae767dbb
4 changed files with 14 additions and 5 deletions
+4
View File
@@ -312,6 +312,10 @@ struct System::Impl {
} }
SystemResultStatus Load(System& system, Frontend::EmuWindow& emu_window, const std::string& filepath, Service::AM::FrontendAppletParameters& params) { SystemResultStatus Load(System& system, Frontend::EmuWindow& emu_window, const std::string& filepath, Service::AM::FrontendAppletParameters& params) {
if (params.launch_type == Service::AM::LaunchType::FrontendInitiated) {
fs_controller.InitTempStorage();
}
InitializeKernel(system); InitializeKernel(system);
if (params.applet_type == Service::AM::AppletType::Application) { if (params.applet_type == Service::AM::AppletType::Application) {
+1 -5
View File
@@ -57,11 +57,7 @@ std::string GetFutureSaveDataPath(SaveDataSpaceId space_id, SaveDataType type, u
SaveDataFactory::SaveDataFactory(Core::System& system_, ProgramId program_id_, SaveDataFactory::SaveDataFactory(Core::System& system_, ProgramId program_id_,
VirtualDir save_directory_) VirtualDir save_directory_)
: system{system_}, program_id{program_id_}, dir{std::move(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");
}
SaveDataFactory::~SaveDataFactory() = default; SaveDataFactory::~SaveDataFactory() = default;
@@ -787,6 +787,13 @@ void FileSystemController::CreateFactories(FileSys::VfsFilesystem& vfs, bool ove
} }
} }
void FileSystemController::InitTempStorage() {
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");
}
}
void FileSystemController::Reset() { void FileSystemController::Reset() {
std::scoped_lock lk{registration_lock}; std::scoped_lock lk{registration_lock};
registrations.clear(); registrations.clear();
@@ -127,6 +127,8 @@ public:
// above is called. // above is called.
void CreateFactories(FileSys::VfsFilesystem& vfs, bool overwrite = true); void CreateFactories(FileSys::VfsFilesystem& vfs, bool overwrite = true);
void InitTempStorage();
void Reset(); void Reset();
private: private: