From 1efb83bf53036fb95235e70b955fc9e1673e3cca Mon Sep 17 00:00:00 2001
From: archshift <admin@archshift.com>
Date: Thu, 30 Oct 2014 22:44:51 -0700
Subject: [PATCH] Qt: Auto-start game when selected, play game that's passed
 via argv[1].

Also moves system initialization to when the game is booted.
---
 src/citra_qt/main.cpp | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp
index 153712273a..304c169b95 100644
--- a/src/citra_qt/main.cpp
+++ b/src/citra_qt/main.cpp
@@ -116,7 +116,10 @@ GMainWindow::GMainWindow()
 
     show();
 
-    System::Init(render_window);
+    QStringList args = QApplication::arguments();
+    if (args.length() >= 2) {
+        BootGame(args[1].toStdString());
+    }
 }
 
 GMainWindow::~GMainWindow()
@@ -129,6 +132,7 @@ GMainWindow::~GMainWindow()
 void GMainWindow::BootGame(std::string filename)
 {
     NOTICE_LOG(MASTER_LOG, "Citra starting...\n");
+    System::Init(render_window);
 
     if (Core::Init()) {
         ERROR_LOG(MASTER_LOG, "Core initialization failed, exiting...");
@@ -149,6 +153,7 @@ void GMainWindow::BootGame(std::string filename)
     render_window->GetEmuThread().start();
 
     render_window->show();
+    OnStartGame();
 }
 
 void GMainWindow::OnMenuLoadFile()
@@ -185,6 +190,7 @@ void GMainWindow::OnPauseGame()
 void GMainWindow::OnStopGame()
 {
     render_window->GetEmuThread().SetCpuRunning(false);
+    // TODO: Shutdown core
 
     ui.action_Start->setEnabled(true);
     ui.action_Pause->setEnabled(false);
@@ -246,7 +252,6 @@ int __cdecl main(int argc, char* argv[])
     QApplication::setAttribute(Qt::AA_X11InitThreads);
     QApplication app(argc, argv);
     GMainWindow main_window;
-
     main_window.show();
     return app.exec();
 }