aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorGravatar bunnei <bunneidev@gmail.com>2014-07-04 13:38:12 -0400
committerGravatar bunnei <bunneidev@gmail.com>2014-07-04 20:37:51 -0400
commit542700ccb7e629db21dff3193938e9ada97876c2 (patch)
treee2c8c8ee05e14b51712324b396a3f85d564b1f9a /src/core
parent1099d83455153f9d81b10b54a788bc9fe91f33e9 (diff)
Archive: Added Init/Shutdown methods to reset kernel archive state.
Diffstat (limited to 'src/core')
-rw-r--r--src/core/hle/kernel/archive.cpp10
-rw-r--r--src/core/hle/kernel/archive.h6
-rw-r--r--src/core/hle/kernel/kernel.cpp3
3 files changed, 19 insertions, 0 deletions
diff --git a/src/core/hle/kernel/archive.cpp b/src/core/hle/kernel/archive.cpp
index f31c02ea..76b2520d 100644
--- a/src/core/hle/kernel/archive.cpp
+++ b/src/core/hle/kernel/archive.cpp
@@ -144,4 +144,14 @@ Handle CreateArchive(FileSys::Archive* backend, const std::string& name) {
return handle;
}
+/// Initialize archives
+void ArchiveInit() {
+ g_archive_map.clear();
+}
+
+/// Shutdown archives
+void ArchiveShutdown() {
+ g_archive_map.clear();
+}
+
} // namespace Kernel
diff --git a/src/core/hle/kernel/archive.h b/src/core/hle/kernel/archive.h
index 07fb37ae..3758e706 100644
--- a/src/core/hle/kernel/archive.h
+++ b/src/core/hle/kernel/archive.h
@@ -29,4 +29,10 @@ Handle OpenArchive(FileSys::Archive::IdCode id_code);
*/
Handle CreateArchive(FileSys::Archive* backend, const std::string& name);
+/// Initialize archives
+void ArchiveInit();
+
+/// Shutdown archives
+void ArchiveShutdown();
+
} // namespace FileSys
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index cda183ad..7d9bd261 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -9,6 +9,7 @@
#include "core/core.h"
#include "core/hle/kernel/kernel.h"
#include "core/hle/kernel/thread.h"
+#include "core/hle/kernel/archive.h"
namespace Kernel {
@@ -133,11 +134,13 @@ Object* ObjectPool::CreateByIDType(int type) {
/// Initialize the kernel
void Init() {
Kernel::ThreadingInit();
+ Kernel::ArchiveInit();
}
/// Shutdown the kernel
void Shutdown() {
Kernel::ThreadingShutdown();
+ Kernel::ArchiveShutdown();
g_object_pool.Clear(); // Free all kernel objects
}