diff --git a/Windows/MainWindow.cpp b/Windows/MainWindow.cpp index 9f3a66e090..de6b09baed 100644 --- a/Windows/MainWindow.cpp +++ b/Windows/MainWindow.cpp @@ -968,6 +968,7 @@ namespace MainWindow break; case WM_CLOSE: + MainThread_Stop(); InputDevice::StopPolling(); WindowsRawInput::Shutdown(); return DefWindowProc(hWnd,message,wParam,lParam); @@ -976,8 +977,9 @@ namespace MainWindow KillTimer(hWnd, TIMER_CURSORUPDATE); KillTimer(hWnd, TIMER_CURSORMOVEUPDATE); KillTimer(hWnd, TIMER_WHEELRELEASE); + // Main window is gone, this tells the message loop to exit. PostQuitMessage(0); - break; + return 0; case WM_USER + 1: NotifyDebuggerMapLoaded(); diff --git a/Windows/main.cpp b/Windows/main.cpp index dc790cd7f8..9351202bee 100644 --- a/Windows/main.cpp +++ b/Windows/main.cpp @@ -776,8 +776,6 @@ int WINAPI WinMain(HINSTANCE _hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLin } } - MainThread_Stop(); - VFSShutdown(); MainWindow::DestroyDebugWindows();