diff --git a/Source/Core/DolphinQt/MainWindow.cpp b/Source/Core/DolphinQt/MainWindow.cpp index 488ca8ecd6..a8e4e0764d 100644 --- a/Source/Core/DolphinQt/MainWindow.cpp +++ b/Source/Core/DolphinQt/MainWindow.cpp @@ -1379,8 +1379,8 @@ void MainWindow::ShowFIFOPlayer() { if (!m_fifo_window) { - m_fifo_window = new FIFOPlayerWindow(m_system.GetFifoPlayer(), m_system.GetFifoRecorder()); - connect(m_fifo_window, &FIFOPlayerWindow::LoadFIFORequested, this, + m_fifo_window.reset(new FIFOPlayerWindow(m_system.GetFifoPlayer(), m_system.GetFifoRecorder())); + connect(m_fifo_window.get(), &FIFOPlayerWindow::LoadFIFORequested, this, [this](const QString& path) { StartGame(path, ScanForSecondDisc::No); }); } diff --git a/Source/Core/DolphinQt/MainWindow.h b/Source/Core/DolphinQt/MainWindow.h index d648e6189c..38250058ed 100644 --- a/Source/Core/DolphinQt/MainWindow.h +++ b/Source/Core/DolphinQt/MainWindow.h @@ -16,6 +16,7 @@ #endif // USE_RETRO_ACHIEVEMENTS #include "Core/Boot/Boot.h" +#include "DolphinQt/FIFO/FIFOPlayerWindow.h" class QMenu; class QStackedWidget; @@ -29,7 +30,6 @@ class CheatsManager; class CodeWidget; class DiscordHandler; class DragEnterEvent; -class FIFOPlayerWindow; class FreeLookWindow; class GameList; class GBATASInputWindow; @@ -245,7 +245,9 @@ private: std::unique_ptr m_pending_boot; SettingsWindow* m_settings_window = nullptr; - FIFOPlayerWindow* m_fifo_window = nullptr; + // m_fifo_window doesn't set MainWindow as its parent so that the fifo can be focused without + // raising the main window, so use a unique_ptr to make sure it gets destroyed. + std::unique_ptr m_fifo_window = nullptr; SkylanderPortalWindow* m_skylander_window = nullptr; InfinityBaseWindow* m_infinity_window = nullptr; WiiSpeakWindow* m_wii_speak_window = nullptr;