MainWindow: shutdown different input interfaces

`MainWindow` initializes a number of input interfaces but never shuts
them down. This was causing a crash-after-exit on macOS where the
ControllerInterface backend stores a `std::thread` object in a static
variable and only stops it when ControllerInterface::Shutdown is called.
This commit is contained in:
Michael Maltese 2017-05-31 21:11:54 -07:00
parent 6dc3b2e8bc
commit 040bddafa6
2 changed files with 11 additions and 0 deletions

View File

@ -52,6 +52,7 @@ MainWindow::MainWindow() : QMainWindow(nullptr)
MainWindow::~MainWindow() MainWindow::~MainWindow()
{ {
m_render_widget->deleteLater(); m_render_widget->deleteLater();
ShutdownControllers();
} }
void MainWindow::InitControllers() void MainWindow::InitControllers()
@ -66,6 +67,15 @@ void MainWindow::InitControllers()
HotkeyManagerEmu::Initialize(); HotkeyManagerEmu::Initialize();
} }
void MainWindow::ShutdownControllers()
{
g_controller_interface.Shutdown();
Pad::Shutdown();
Keyboard::Shutdown();
Wiimote::Shutdown();
HotkeyManagerEmu::Shutdown();
}
void MainWindow::CreateComponents() void MainWindow::CreateComponents()
{ {
m_menu_bar = new MenuBar(this); m_menu_bar = new MenuBar(this);

View File

@ -66,6 +66,7 @@ private:
void ConnectPathsDialog(); void ConnectPathsDialog();
void InitControllers(); void InitControllers();
void ShutdownControllers();
void StartGame(const QString& path); void StartGame(const QString& path);
void ShowRenderWidget(); void ShowRenderWidget();