diff --git a/src/platform/qt/GDBController.cpp b/src/platform/qt/GDBController.cpp index 27d366de7..467d0409e 100644 --- a/src/platform/qt/GDBController.cpp +++ b/src/platform/qt/GDBController.cpp @@ -49,28 +49,25 @@ void GDBController::detach() { if (!isAttached()) { return; } - bool wasPaused = m_gameController->isPaused(); disconnect(m_gameController, SIGNAL(frameAvailable(const uint32_t*)), this, SLOT(updateGDB())); - m_gameController->setPaused(true); + m_gameController->threadInterrupt(); GDBStubShutdown(&m_gdbStub); m_gameController->setDebugger(nullptr); - m_gameController->setPaused(wasPaused); + m_gameController->threadContinue(); } void GDBController::listen() { + m_gameController->threadInterrupt(); if (!isAttached()) { attach(); } - bool wasPaused = m_gameController->isPaused(); connect(m_gameController, SIGNAL(frameAvailable(const uint32_t*)), this, SLOT(updateGDB())); - m_gameController->setPaused(true); GDBStubListen(&m_gdbStub, m_port, m_bindAddress); - m_gameController->setPaused(wasPaused); + m_gameController->threadContinue(); } void GDBController::updateGDB() { - bool wasPaused = m_gameController->isPaused(); - m_gameController->setPaused(true); + m_gameController->threadInterrupt(); GDBStubUpdate(&m_gdbStub); - m_gameController->setPaused(wasPaused); + m_gameController->threadContinue(); } diff --git a/src/platform/qt/GameController.cpp b/src/platform/qt/GameController.cpp index 388943406..b5b2792f6 100644 --- a/src/platform/qt/GameController.cpp +++ b/src/platform/qt/GameController.cpp @@ -146,8 +146,7 @@ ARMDebugger* GameController::debugger() { } void GameController::setDebugger(ARMDebugger* debugger) { - bool wasPaused = isPaused(); - setPaused(true); + threadInterrupt(); if (m_threadContext.debugger && GBAThreadHasStarted(&m_threadContext)) { GBADetachDebugger(m_threadContext.gba); } @@ -155,7 +154,7 @@ void GameController::setDebugger(ARMDebugger* debugger) { if (m_threadContext.debugger && GBAThreadHasStarted(&m_threadContext)) { GBAAttachDebugger(m_threadContext.gba, m_threadContext.debugger); } - setPaused(wasPaused); + threadContinue(); } #endif