Stop and cleanup properly when closing application (to fix crash)
This commit is contained in:
parent
e257db4def
commit
691175aaaa
5 changed files with 24 additions and 3 deletions
|
@ -21,6 +21,19 @@ void Console::Initialize()
|
||||||
_videoRenderer->StartThread();
|
_videoRenderer->StartThread();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Console::Release()
|
||||||
|
{
|
||||||
|
Stop();
|
||||||
|
|
||||||
|
_videoDecoder->StopThread();
|
||||||
|
_videoRenderer->StopThread();
|
||||||
|
|
||||||
|
_videoDecoder.reset();
|
||||||
|
_videoRenderer.reset();
|
||||||
|
_debugHud.reset();
|
||||||
|
_notificationManager.reset();
|
||||||
|
}
|
||||||
|
|
||||||
void Console::Run()
|
void Console::Run()
|
||||||
{
|
{
|
||||||
if(!_cpu) {
|
if(!_cpu) {
|
||||||
|
|
|
@ -34,6 +34,7 @@ private:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void Initialize();
|
void Initialize();
|
||||||
|
void Release();
|
||||||
|
|
||||||
void Run();
|
void Run();
|
||||||
void Stop();
|
void Stop();
|
||||||
|
|
|
@ -154,15 +154,13 @@ namespace InteropEmu {
|
||||||
|
|
||||||
DllExport void __stdcall Release()
|
DllExport void __stdcall Release()
|
||||||
{
|
{
|
||||||
//_shortcutKeyHandler.reset();
|
|
||||||
|
|
||||||
_console->Stop();
|
_console->Stop();
|
||||||
|
|
||||||
_renderer.reset();
|
_renderer.reset();
|
||||||
_soundManager.reset();
|
_soundManager.reset();
|
||||||
_keyManager.reset();
|
_keyManager.reset();
|
||||||
|
|
||||||
//_console->Release(true);
|
_console->Release();
|
||||||
_console.reset();
|
_console.reset();
|
||||||
|
|
||||||
//_shortcutKeyHandler.reset();
|
//_shortcutKeyHandler.reset();
|
||||||
|
|
|
@ -29,6 +29,14 @@ namespace Mesen.GUI.Forms
|
||||||
EmuApi.InitializeEmu(ConfigManager.HomeFolder, Handle, ctrlRenderer.Handle, false, false, false);
|
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)
|
private void mnuTraceLogger_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
frmTraceLogger frm = new frmTraceLogger();
|
frmTraceLogger frm = new frmTraceLogger();
|
||||||
|
|
|
@ -27,6 +27,7 @@ namespace Mesen.GUI
|
||||||
[DllImport(DllPath)] public static extern void Release();
|
[DllImport(DllPath)] public static extern void Release();
|
||||||
|
|
||||||
[DllImport(DllPath)] public static extern void Run();
|
[DllImport(DllPath)] public static extern void Run();
|
||||||
|
[DllImport(DllPath)] public static extern void Stop();
|
||||||
|
|
||||||
[DllImport(DllPath)] public static extern void LoadRom(
|
[DllImport(DllPath)] public static extern void LoadRom(
|
||||||
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))]string filepath,
|
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))]string filepath,
|
||||||
|
|
Loading…
Add table
Reference in a new issue