summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar bunnei2021-04-23 17:00:46 -0700
committerGravatar bunnei2021-05-05 16:40:52 -0700
commit39a8dba9a67385b2e246dbf96b22adcb8fc53c03 (patch)
tree7c82d079b06324206a59cb4fca16ba78b7fdf8fc
parenthle: kernel: Migrate KPort, KClientPort, and KServerPort to KAutoObject. (diff)
downloadyuzu-39a8dba9a67385b2e246dbf96b22adcb8fc53c03.tar.gz
yuzu-39a8dba9a67385b2e246dbf96b22adcb8fc53c03.tar.xz
yuzu-39a8dba9a67385b2e246dbf96b22adcb8fc53c03.zip
hle: kernel: Cleanup shutdown of persistent kernel objects.
-rw-r--r--src/core/hle/kernel/kernel.cpp26
1 files changed, 12 insertions, 14 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index c939bb903..b2eb51bde 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -129,20 +129,18 @@ struct KernelCore::Impl {
129 129
130 exclusive_monitor.reset(); 130 exclusive_monitor.reset();
131 131
132 hid_shared_mem->Close(); 132 // Cleanup persistent kernel objects
133 hid_shared_mem = nullptr; 133 auto CleanupObject = [](KAutoObject* obj) {
134 134 if (obj) {
135 font_shared_mem->Close(); 135 obj->Close();
136 font_shared_mem = nullptr; 136 obj = nullptr;
137 137 }
138 irs_shared_mem->Close(); 138 };
139 irs_shared_mem = nullptr; 139 CleanupObject(hid_shared_mem);
140 140 CleanupObject(font_shared_mem);
141 time_shared_mem->Close(); 141 CleanupObject(irs_shared_mem);
142 time_shared_mem = nullptr; 142 CleanupObject(time_shared_mem);
143 143 CleanupObject(system_resource_limit);
144 system_resource_limit->Close();
145 system_resource_limit = nullptr;
146 144
147 // Next host thead ID to use, 0-3 IDs represent core threads, >3 represent others 145 // Next host thead ID to use, 0-3 IDs represent core threads, >3 represent others
148 next_host_thread_id = Core::Hardware::NUM_CPU_CORES; 146 next_host_thread_id = Core::Hardware::NUM_CPU_CORES;