aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/citra_qt/main.cpp
diff options
context:
space:
mode:
authorGravatar bunnei <bunneidev@gmail.com>2015-04-16 23:31:14 -0400
committerGravatar bunnei <bunneidev@gmail.com>2015-05-01 18:27:00 -0400
commit28df8dbfeb17cf5a002a5504a6bd2ba5091bf07c (patch)
tree57733ea06f6594a5fd4ed7b191130b963895deb2 /src/citra_qt/main.cpp
parentd5665fea89dc2684e145e82a1b07086f11a13a65 (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.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp
index 9f9ebc91..fe1dac62 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()