From 1e76d25986053eb344b23925815799cf81fd536d Mon Sep 17 00:00:00 2001 From: Sour Date: Wed, 3 Jan 2018 01:14:46 -0500 Subject: [PATCH] Fixed crash that occurred at shutdown when a Lua script save confirmation popup was shown (only when "Pause when in the background" option is enabled) --- Core/VideoRenderer.cpp | 5 +++++ Core/VideoRenderer.h | 2 ++ InteropDLL/ConsoleWrapper.cpp | 11 ++++++++--- 3 files changed, 15 insertions(+), 3 deletions(-) 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(); }