diff --git a/src/frontend/qt_sdl/Window.cpp b/src/frontend/qt_sdl/Window.cpp index cf1a27f1..3ba8af1d 100755 --- a/src/frontend/qt_sdl/Window.cpp +++ b/src/frontend/qt_sdl/Window.cpp @@ -809,6 +809,18 @@ MainWindow::MainWindow(int id, EmuInstance* inst, QWidget* parent) : MainWindow::~MainWindow() { + if (windowID == 0) + emuInstance->saveEnabledWindows(); + else + saveEnabled(false); + + QByteArray geom = saveGeometry(); + QByteArray enc = geom.toBase64(QByteArray::Base64Encoding); + windowCfg.SetString("Geometry", enc.toStdString()); + Config::Save(); + + emuInstance->deleteWindow(windowID, false); + if (hasMenu) { delete[] actScreenAspectTop; @@ -829,28 +841,6 @@ void MainWindow::saveEnabled(bool enabled) enabledSaved = true; } -void MainWindow::closeEvent(QCloseEvent* event) -{ - if (!emuInstance) return; - - if (windowID == 0) - emuInstance->saveEnabledWindows(); - else - saveEnabled(false); - - QByteArray geom = saveGeometry(); - QByteArray enc = geom.toBase64(QByteArray::Base64Encoding); - windowCfg.SetString("Geometry", enc.toStdString()); - Config::Save(); - - emuInstance->deleteWindow(windowID, false); - - // emuInstance may be deleted - // prevent use after free from us - emuInstance = nullptr; - QMainWindow::closeEvent(event); -} - void MainWindow::createScreenPanel() { if (panel) delete panel; diff --git a/src/frontend/qt_sdl/Window.h b/src/frontend/qt_sdl/Window.h index 678be7c9..5d02b4ee 100755 --- a/src/frontend/qt_sdl/Window.h +++ b/src/frontend/qt_sdl/Window.h @@ -242,8 +242,6 @@ private slots: void onScreenEmphasisToggled(); private: - virtual void closeEvent(QCloseEvent* event) override; - QStringList currentROM; QStringList currentGBAROM; QList recentFileList;