diff options
author | bunnei <bunneidev@gmail.com> | 2015-04-16 23:31:14 -0400 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2015-05-01 18:27:00 -0400 |
commit | 28df8dbfeb17cf5a002a5504a6bd2ba5091bf07c (patch) | |
tree | 57733ea06f6594a5fd4ed7b191130b963895deb2 /src/citra_qt/main.cpp | |
parent | d5665fea89dc2684e145e82a1b07086f11a13a65 (diff) |
Qt: Create emu thread on bootup, kill it on shutdown.
Diffstat (limited to 'src/citra_qt/main.cpp')
-rw-r--r-- | src/citra_qt/main.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp index 9f9ebc9189..fe1dac622c 100644 --- a/src/citra_qt/main.cpp +++ b/src/citra_qt/main.cpp @@ -57,7 +57,6 @@ GMainWindow::GMainWindow() : emu_thread(nullptr) render_window = new GRenderWindow(this, *this); render_window->hide(); - emu_thread = new EmuThread(render_window); profilerWidget = new ProfilerWidget(this); addDockWidget(Qt::BottomDockWidgetArea, profilerWidget); @@ -197,9 +196,9 @@ void GMainWindow::OnDisplayTitleBars(bool show) } } -void GMainWindow::BootGame(std::string filename) -{ +void GMainWindow::BootGame(std::string filename) { LOG_INFO(Frontend, "Citra starting...\n"); + System::Init(render_window); // Load a game or die... @@ -211,6 +210,7 @@ void GMainWindow::BootGame(std::string filename) registersWidget->OnDebugModeEntered(); callstackWidget->OnDebugModeEntered(); + emu_thread = new EmuThread(render_window); emu_thread->start(); render_window->show(); @@ -248,14 +248,22 @@ void GMainWindow::OnPauseGame() ui.action_Stop->setEnabled(true); } -void GMainWindow::OnStopGame() -{ +void GMainWindow::OnStopGame() { emu_thread->SetCpuRunning(false); - // TODO: Shutdown core + + emu_thread->ShutdownCpu(); + emu_thread->WaitForCpuShutdown(); + emu_thread->Stop(); + + delete emu_thread; + + System::Shutdown(); ui.action_Start->setEnabled(true); ui.action_Pause->setEnabled(false); ui.action_Stop->setEnabled(false); + + render_window->hide(); } void GMainWindow::OnOpenHotkeysDialog() |