summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/fs/archive.cpp
diff options
context:
space:
mode:
authorYuri Kunde Schlesner <yuriks@yuriks.net>2016-07-10 05:39:19 +0200
committerGitHub <noreply@github.com>2016-07-10 05:39:19 +0200
commitffda82eea546830d15284810e91e58c5b6627a0c (patch)
tree5d0cb7b7f17ef73bd382b08cce863f1b05ed10df /src/core/hle/service/fs/archive.cpp
parentMerge pull request #1940 from JamePeng/fix-archive-error-code (diff)
parentQt: add system settings config tab (diff)
downloadyuzu-ffda82eea546830d15284810e91e58c5b6627a0c.tar
yuzu-ffda82eea546830d15284810e91e58c5b6627a0c.tar.gz
yuzu-ffda82eea546830d15284810e91e58c5b6627a0c.tar.bz2
yuzu-ffda82eea546830d15284810e91e58c5b6627a0c.tar.lz
yuzu-ffda82eea546830d15284810e91e58c5b6627a0c.tar.xz
yuzu-ffda82eea546830d15284810e91e58c5b6627a0c.tar.zst
yuzu-ffda82eea546830d15284810e91e58c5b6627a0c.zip
Diffstat (limited to 'src/core/hle/service/fs/archive.cpp')
-rw-r--r--src/core/hle/service/fs/archive.cpp24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/core/hle/service/fs/archive.cpp b/src/core/hle/service/fs/archive.cpp
index f4acc4895..4c7aaa7f2 100644
--- a/src/core/hle/service/fs/archive.cpp
+++ b/src/core/hle/service/fs/archive.cpp
@@ -259,7 +259,7 @@ using FileSys::ArchiveFactory;
/**
* Map of registered archives, identified by id code. Once an archive is registered here, it is
- * never removed until the FS service is shut down.
+ * never removed until UnregisterArchiveTypes is called.
*/
static boost::container::flat_map<ArchiveIdCode, std::unique_ptr<ArchiveFactory>> id_code_map;
@@ -520,12 +520,7 @@ ResultCode CreateSystemSaveData(u32 high, u32 low) {
return RESULT_SUCCESS;
}
-/// Initialize archives
-void ArchiveInit() {
- next_handle = 1;
-
- AddService(new FS::Interface);
-
+void RegisterArchiveTypes() {
// TODO(Subv): Add the other archive types (see here for the known types:
// http://3dbrew.org/wiki/FS:OpenArchive#Archive_idcodes).
@@ -562,10 +557,23 @@ void ArchiveInit() {
RegisterArchiveType(std::move(systemsavedata_factory), ArchiveIdCode::SystemSaveData);
}
+void UnregisterArchiveTypes() {
+ id_code_map.clear();
+}
+
+/// Initialize archives
+void ArchiveInit() {
+ next_handle = 1;
+
+ AddService(new FS::Interface);
+
+ RegisterArchiveTypes();
+}
+
/// Shutdown archives
void ArchiveShutdown() {
handle_map.clear();
- id_code_map.clear();
+ UnregisterArchiveTypes();
}
} // namespace FS