From 88ef2e21693afac38e44222bff9931d8ea575785 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Wed, 25 Apr 2018 09:09:17 -0700 Subject: [PATCH] Qt: Fix launching with -g (fixes #1018) --- src/platform/qt/DebuggerController.cpp | 11 +++++++++-- src/platform/qt/DebuggerController.h | 2 +- src/platform/qt/GDBController.cpp | 1 - src/platform/qt/Window.cpp | 3 +++ 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/platform/qt/DebuggerController.cpp b/src/platform/qt/DebuggerController.cpp index eb27789a7..f6c7fdd36 100644 --- a/src/platform/qt/DebuggerController.cpp +++ b/src/platform/qt/DebuggerController.cpp @@ -32,6 +32,10 @@ void DebuggerController::setController(std::shared_ptr controlle connect(m_gameController.get(), &CoreController::stopping, [this]() { setController(nullptr); }); + if (m_autoattach) { + m_autoattach = false; + attach(); + } } } @@ -43,11 +47,12 @@ void DebuggerController::attach() { attachInternal(); m_gameController->setDebugger(m_debugger); mDebuggerEnter(m_debugger, DEBUGGER_ENTER_ATTACHED, 0); + } else { + m_autoattach = true; } } void DebuggerController::detach() { - QObject::disconnect(m_autoattach); if (!isAttached()) { return; } @@ -55,6 +60,8 @@ void DebuggerController::detach() { CoreController::Interrupter interrupter(m_gameController); shutdownInternal(); m_gameController->setDebugger(nullptr); + } else { + m_autoattach = false; } } @@ -67,7 +74,7 @@ void DebuggerController::breakInto() { } void DebuggerController::shutdown() { - QObject::disconnect(m_autoattach); + m_autoattach = false; if (!isAttached()) { return; } diff --git a/src/platform/qt/DebuggerController.h b/src/platform/qt/DebuggerController.h index 650d533d3..45ac434da 100644 --- a/src/platform/qt/DebuggerController.h +++ b/src/platform/qt/DebuggerController.h @@ -39,7 +39,7 @@ protected: std::shared_ptr m_gameController; private: - QMetaObject::Connection m_autoattach; + bool m_autoattach = false; }; } diff --git a/src/platform/qt/GDBController.cpp b/src/platform/qt/GDBController.cpp index ade67e08c..d2e9523b7 100644 --- a/src/platform/qt/GDBController.cpp +++ b/src/platform/qt/GDBController.cpp @@ -34,7 +34,6 @@ void GDBController::setBindAddress(uint32_t bindAddress) { } void GDBController::listen() { - CoreController::Interrupter interrupter(m_gameController); if (!isAttached()) { attach(); } diff --git a/src/platform/qt/Window.cpp b/src/platform/qt/Window.cpp index c5d6adf4b..a6012b173 100644 --- a/src/platform/qt/Window.cpp +++ b/src/platform/qt/Window.cpp @@ -175,6 +175,9 @@ void Window::argumentsPassed(mArguments* args) { if (args->debuggerType == DEBUGGER_GDB) { if (!m_gdbController) { m_gdbController = new GDBController(this); + if (m_controller) { + m_gdbController->setController(m_controller); + } m_gdbController->listen(); } }