From 9ec62368bc9906ee8b9390bb609efe780ae11e21 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Mon, 8 Feb 2016 20:48:39 -0800 Subject: [PATCH] Qt: Fix some config regressions --- src/platform/qt/GameController.cpp | 16 ++++++++++------ src/platform/qt/GameController.h | 3 ++- src/platform/qt/OverrideView.cpp | 2 +- src/platform/qt/Window.cpp | 15 +++++++-------- src/platform/qt/Window.h | 2 +- 5 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/platform/qt/GameController.cpp b/src/platform/qt/GameController.cpp index 0d48049db..d46d5f76c 100644 --- a/src/platform/qt/GameController.cpp +++ b/src/platform/qt/GameController.cpp @@ -106,7 +106,7 @@ GameController::GameController(QObject* parent) if (mCoreLoadState(context->core, 0, controller->m_loadStateFlags)) { mCoreDeleteState(context->core, 0); } - QMetaObject::invokeMethod(controller, "gameStarted", Q_ARG(mCoreThread*, context)); + QMetaObject::invokeMethod(controller, "gameStarted", Q_ARG(mCoreThread*, context), Q_ARG(const QString&, controller->m_fname)); }; m_threadContext.cleanCallback = [](mCoreThread* context) { @@ -235,12 +235,12 @@ void GameController::setOverride(const GBACartridgeOverride& override) { } void GameController::setConfig(const mCoreConfig* config) { - if (!m_gameOpen) { - return; + m_config = config; + if (isLoaded()) { + threadInterrupt(); + mCoreLoadForeignConfig(m_threadContext.core, config); + threadContinue(); } - threadInterrupt(); - mCoreLoadForeignConfig(m_threadContext.core, config); - threadContinue(); } #ifdef USE_GDB_STUB @@ -333,6 +333,10 @@ void GameController::openGame(bool biosOnly) { m_threadContext.core->setAVStream(m_threadContext.core, m_stream); + if (m_config) { + mCoreLoadForeignConfig(m_threadContext.core, m_config); + } + if (!mCoreThreadStart(&m_threadContext)) { m_gameOpen = false; emit gameFailed(); diff --git a/src/platform/qt/GameController.h b/src/platform/qt/GameController.h index 3e8e4f459..c445efa49 100644 --- a/src/platform/qt/GameController.h +++ b/src/platform/qt/GameController.h @@ -82,7 +82,7 @@ public: signals: void frameAvailable(const uint32_t*); - void gameStarted(mCoreThread*); + void gameStarted(mCoreThread*, const QString& fname); void gameStopped(mCoreThread*); void gamePaused(mCoreThread*); void gameUnpaused(mCoreThread*); @@ -171,6 +171,7 @@ private: uint32_t* m_drawContext; uint32_t* m_frontBuffer; mCoreThread m_threadContext; + const mCoreConfig* m_config; GBACheatDevice m_cheatDevice; int m_activeKeys; int m_activeButtons; diff --git a/src/platform/qt/OverrideView.cpp b/src/platform/qt/OverrideView.cpp index 984e5094c..ce4af0077 100644 --- a/src/platform/qt/OverrideView.cpp +++ b/src/platform/qt/OverrideView.cpp @@ -21,7 +21,7 @@ OverrideView::OverrideView(GameController* controller, ConfigController* config, { m_ui.setupUi(this); - connect(controller, SIGNAL(gameStarted(mCoreThread*)), this, SLOT(gameStarted(mCoreThread*))); + connect(controller, SIGNAL(gameStarted(mCoreThread*, const QString&)), this, SLOT(gameStarted(mCoreThread*))); connect(controller, SIGNAL(gameStopped(mCoreThread*)), this, SLOT(gameStopped())); connect(m_ui.hwAutodetect, &QAbstractButton::toggled, [this] (bool enabled) { diff --git a/src/platform/qt/Window.cpp b/src/platform/qt/Window.cpp index be0b82ca1..4b4820a8d 100644 --- a/src/platform/qt/Window.cpp +++ b/src/platform/qt/Window.cpp @@ -94,8 +94,8 @@ Window::Window(ConfigController* config, int playerId, QWidget* parent) m_screenWidget->setLockAspectRatio(m_logo.width(), m_logo.height()); setCentralWidget(m_screenWidget); - connect(m_controller, SIGNAL(gameStarted(mCoreThread*)), this, SLOT(gameStarted(mCoreThread*))); - connect(m_controller, SIGNAL(gameStarted(mCoreThread*)), &m_inputController, SLOT(suspendScreensaver())); + connect(m_controller, SIGNAL(gameStarted(mCoreThread*, const QString&)), this, SLOT(gameStarted(mCoreThread*, const QString&))); + connect(m_controller, SIGNAL(gameStarted(mCoreThread*, const QString&)), &m_inputController, SLOT(suspendScreensaver())); connect(m_controller, SIGNAL(gameStopped(mCoreThread*)), m_display, SLOT(stopDrawing())); connect(m_controller, SIGNAL(gameStopped(mCoreThread*)), this, SLOT(gameStopped())); connect(m_controller, SIGNAL(gameStopped(mCoreThread*)), &m_inputController, SLOT(resumeScreensaver())); @@ -597,8 +597,7 @@ void Window::toggleFullScreen() { } } -void Window::gameStarted(mCoreThread* context) { - char title[13] = { '\0' }; +void Window::gameStarted(mCoreThread* context, const QString& fname) { MutexLock(&context->stateMutex); if (context->state < THREAD_EXITING) { emit startDrawing(context); @@ -611,10 +610,10 @@ void Window::gameStarted(mCoreThread* context) { action->setDisabled(false); } multiplayerChanged(); - /*if (context->fname) { - setWindowFilePath(context->fname); - appendMRU(context->fname); - }*/ + if (!fname.isEmpty()) { + setWindowFilePath(fname); + appendMRU(fname); + } updateTitle(); attachWidget(m_display); diff --git a/src/platform/qt/Window.h b/src/platform/qt/Window.h index c66682780..810f34e68 100644 --- a/src/platform/qt/Window.h +++ b/src/platform/qt/Window.h @@ -111,7 +111,7 @@ protected: virtual void mouseDoubleClickEvent(QMouseEvent*) override; private slots: - void gameStarted(mCoreThread*); + void gameStarted(mCoreThread*, const QString&); void gameStopped(); void gameCrashed(const QString&); void gameFailed();