aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/hle/service/gsp_gpu.cpp
diff options
context:
space:
mode:
authorGravatar Yuri Kunde Schlesner <yuriks@yuriks.net>2015-07-17 02:24:13 -0300
committerGravatar Yuri Kunde Schlesner <yuriks@yuriks.net>2015-07-17 02:24:13 -0300
commitdc39d06950de246094be9643313970125e0c49ee (patch)
treee7f43ef1f2ae7b8fd029bdaf6c43c2b25f5620eb /src/core/hle/service/gsp_gpu.cpp
parent078bf29d1d0b15a4c60e8baaa02fae5d90633300 (diff)
Ensure all kernel objects are released during shutdown
This commit fixes several kernel object leaks. The most severe of them was threads not being removed from the private handle table used for CoreTiming events. This resulted in Threads never being released, which in turn held references to Process, causing CodeSets to never be freed when loading other applications.
Diffstat (limited to 'src/core/hle/service/gsp_gpu.cpp')
-rw-r--r--src/core/hle/service/gsp_gpu.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/core/hle/service/gsp_gpu.cpp b/src/core/hle/service/gsp_gpu.cpp
index 3910d022..8b40ba37 100644
--- a/src/core/hle/service/gsp_gpu.cpp
+++ b/src/core/hle/service/gsp_gpu.cpp
@@ -584,7 +584,7 @@ const Interface::FunctionInfo FunctionTable[] = {
Interface::Interface() {
Register(FunctionTable);
- g_interrupt_event = 0;
+ g_interrupt_event = nullptr;
using Kernel::MemoryPermission;
g_shared_memory = Kernel::SharedMemory::Create(0x1000, MemoryPermission::ReadWrite,
@@ -593,4 +593,9 @@ Interface::Interface() {
g_thread_id = 0;
}
+Interface::~Interface() {
+ g_interrupt_event = nullptr;
+ g_shared_memory = nullptr;
+}
+
} // namespace