diff --git a/Source/Core/DolphinQt2/Main.cpp b/Source/Core/DolphinQt2/Main.cpp index eb4905264216..95593ebe348f 100644 --- a/Source/Core/DolphinQt2/Main.cpp +++ b/Source/Core/DolphinQt2/Main.cpp @@ -180,7 +180,7 @@ int main(int argc, char* argv[]) MainWindow win{std::move(boot)}; if (options.is_set("debugger")) Settings::Instance().SetDebugModeEnabled(true); - win.show(); + win.Show(); #if defined(USE_ANALYTICS) && USE_ANALYTICS if (!SConfig::GetInstance().m_analytics_permission_asked) diff --git a/Source/Core/DolphinQt2/MainWindow.cpp b/Source/Core/DolphinQt2/MainWindow.cpp index 5b0b31858294..aa15975cde0d 100644 --- a/Source/Core/DolphinQt2/MainWindow.cpp +++ b/Source/Core/DolphinQt2/MainWindow.cpp @@ -110,7 +110,7 @@ MainWindow::MainWindow(std::unique_ptr boot_parameters) : QMainW NetPlayInit(); if (boot_parameters) - StartGame(std::move(boot_parameters)); + m_pending_boot = std::move(boot_parameters); QSettings& settings = Settings::GetQSettings(); @@ -1351,3 +1351,15 @@ void MainWindow::OnUpdateProgressDialog(QString title, int progress, int total) m_progress_dialog = nullptr; } } + +void MainWindow::Show() +{ + QWidget::show(); + + // If the booting of a game was requested on start up, do that now + if (m_pending_boot != nullptr) + { + StartGame(std::move(m_pending_boot)); + m_pending_boot.reset(); + } +} diff --git a/Source/Core/DolphinQt2/MainWindow.h b/Source/Core/DolphinQt2/MainWindow.h index 3b76e271461f..82520f68cb32 100644 --- a/Source/Core/DolphinQt2/MainWindow.h +++ b/Source/Core/DolphinQt2/MainWindow.h @@ -58,6 +58,8 @@ class MainWindow final : public QMainWindow explicit MainWindow(std::unique_ptr boot_parameters); ~MainWindow(); + void Show(); + bool eventFilter(QObject* object, QEvent* event) override; signals: