Kernel: Added freeing of kernel objects on emulator shutdown.

This commit is contained in:
bunnei 2014-06-10 22:43:50 -04:00
parent 83a4ad2885
commit f49ac3a2d7
3 changed files with 13 additions and 0 deletions

View file

@ -132,12 +132,16 @@ Object* ObjectPool::CreateByIDType(int type) {
} }
} }
/// Initialize the kernel
void Init() { void Init() {
Kernel::ThreadingInit(); Kernel::ThreadingInit();
} }
/// Shutdown the kernel
void Shutdown() { void Shutdown() {
Kernel::ThreadingShutdown(); Kernel::ThreadingShutdown();
g_object_pool.Clear(); // Free all kernel objects
} }
/** /**

View file

@ -167,6 +167,12 @@ private:
extern ObjectPool g_object_pool; extern ObjectPool g_object_pool;
extern Handle g_main_thread; extern Handle g_main_thread;
/// Initialize the kernel
void Init();
/// Shutdown the kernel
void Shutdown();
/** /**
* Loads executable stored at specified address * Loads executable stored at specified address
* @entry_point Entry point in memory of loaded executable * @entry_point Entry point in memory of loaded executable

View file

@ -8,6 +8,7 @@
#include "core/system.h" #include "core/system.h"
#include "core/hw/hw.h" #include "core/hw/hw.h"
#include "core/hle/hle.h" #include "core/hle/hle.h"
#include "core/hle/kernel/kernel.h"
#include "video_core/video_core.h" #include "video_core/video_core.h"
@ -26,6 +27,7 @@ void Init(EmuWindow* emu_window) {
HLE::Init(); HLE::Init();
CoreTiming::Init(); CoreTiming::Init();
VideoCore::Init(emu_window); VideoCore::Init(emu_window);
Kernel::Init();
} }
void RunLoopFor(int cycles) { void RunLoopFor(int cycles) {
@ -42,6 +44,7 @@ void Shutdown() {
HLE::Shutdown(); HLE::Shutdown();
CoreTiming::Shutdown(); CoreTiming::Shutdown();
VideoCore::Shutdown(); VideoCore::Shutdown();
Kernel::Shutdown();
g_ctr_file_system.Shutdown(); g_ctr_file_system.Shutdown();
} }