diff --git a/Core/VideoRenderer.cpp b/Core/VideoRenderer.cpp index c769c259..e63b4289 100644 --- a/Core/VideoRenderer.cpp +++ b/Core/VideoRenderer.cpp @@ -26,6 +26,11 @@ VideoRenderer::~VideoRenderer() StopThread(); } +void VideoRenderer::Release() +{ + Instance.reset(); +} + void VideoRenderer::StartThread() { if(!_renderThread) { diff --git a/Core/VideoRenderer.h b/Core/VideoRenderer.h index c7dde57a..8bd8e31b 100644 --- a/Core/VideoRenderer.h +++ b/Core/VideoRenderer.h @@ -27,6 +27,8 @@ public: VideoRenderer(); ~VideoRenderer(); + static void Release(); + void StartThread(); void StopThread(); diff --git a/InteropDLL/ConsoleWrapper.cpp b/InteropDLL/ConsoleWrapper.cpp index 200e63f0..0d3d2017 100644 --- a/InteropDLL/ConsoleWrapper.cpp +++ b/InteropDLL/ConsoleWrapper.cpp @@ -313,6 +313,14 @@ namespace InteropEmu { DllExport void __stdcall Release() { _shortcutKeyHandler.reset(); + + Console::GetInstance()->Stop(); + + VideoDecoder::GetInstance()->StopThread(); + VideoDecoder::Release(); + + VideoRenderer::GetInstance()->StopThread(); + VideoRenderer::Release(); Console::Release(); GameServer::StopServer(); @@ -327,9 +335,6 @@ namespace InteropEmu { delete _soundManager; _soundManager = nullptr; } - - VideoDecoder::GetInstance()->StopThread(); - VideoDecoder::Release(); } DllExport void __stdcall TakeScreenshot() { VideoDecoder::GetInstance()->TakeScreenshot(); }