aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/core.cpp4
-rw-r--r--src/core/file_sys/savedata_factory.cpp6
-rw-r--r--src/core/hle/service/filesystem/filesystem.cpp7
-rw-r--r--src/core/hle/service/filesystem/filesystem.h2
4 files changed, 14 insertions, 5 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp
index 054af8dc4a..046ee53346 100644
--- a/src/core/core.cpp
+++ b/src/core/core.cpp
@@ -312,6 +312,10 @@ struct System::Impl {
}
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);
if (params.applet_type == Service::AM::AppletType::Application) {
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 306e8701c3..38d2f1735c 100644
--- a/src/core/hle/service/filesystem/filesystem.cpp
+++ b/src/core/hle/service/filesystem/filesystem.cpp
@@ -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() {
std::scoped_lock lk{registration_lock};
registrations.clear();
diff --git a/src/core/hle/service/filesystem/filesystem.h b/src/core/hle/service/filesystem/filesystem.h
index ef45aec627..a77358e2ef 100644
--- a/src/core/hle/service/filesystem/filesystem.h
+++ b/src/core/hle/service/filesystem/filesystem.h
@@ -127,6 +127,8 @@ public:
// above is called.
void CreateFactories(FileSys::VfsFilesystem& vfs, bool overwrite = true);
+ void InitTempStorage();
+
void Reset();
private: