Stop and cleanup properly when closing application (to fix crash)

This commit is contained in:
Sour 2019-02-16 01:22:31 -05:00
parent e257db4def
commit 691175aaaa
5 changed files with 24 additions and 3 deletions

View file

@ -21,6 +21,19 @@ void Console::Initialize()
_videoRenderer->StartThread();
}
void Console::Release()
{
Stop();
_videoDecoder->StopThread();
_videoRenderer->StopThread();
_videoDecoder.reset();
_videoRenderer.reset();
_debugHud.reset();
_notificationManager.reset();
}
void Console::Run()
{
if(!_cpu) {

View file

@ -34,6 +34,7 @@ private:
public:
void Initialize();
void Release();
void Run();
void Stop();

View file

@ -154,15 +154,13 @@ namespace InteropEmu {
DllExport void __stdcall Release()
{
//_shortcutKeyHandler.reset();
_console->Stop();
_renderer.reset();
_soundManager.reset();
_keyManager.reset();
//_console->Release(true);
_console->Release();
_console.reset();
//_shortcutKeyHandler.reset();

View file

@ -29,6 +29,14 @@ namespace Mesen.GUI.Forms
EmuApi.InitializeEmu(ConfigManager.HomeFolder, Handle, ctrlRenderer.Handle, false, false, false);
}
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
EmuApi.Stop();
EmuApi.Release();
}
private void mnuTraceLogger_Click(object sender, EventArgs e)
{
frmTraceLogger frm = new frmTraceLogger();

View file

@ -27,6 +27,7 @@ namespace Mesen.GUI
[DllImport(DllPath)] public static extern void Release();
[DllImport(DllPath)] public static extern void Run();
[DllImport(DllPath)] public static extern void Stop();
[DllImport(DllPath)] public static extern void LoadRom(
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))]string filepath,