diff --git a/src/plugins/baremetal/baremetaldebugsupport.cpp b/src/plugins/baremetal/baremetaldebugsupport.cpp index eb0de0f7630..a192c1eb842 100644 --- a/src/plugins/baremetal/baremetaldebugsupport.cpp +++ b/src/plugins/baremetal/baremetaldebugsupport.cpp @@ -72,7 +72,8 @@ BareMetalDebugSupport::BareMetalDebugSupport(RunControl *runControl) return; } - p->addTargetRunner(this, runControl); + if (RunWorker *runner = p->targetRunner(runControl)) + addStartDependency(runner); } void BareMetalDebugSupport::start() diff --git a/src/plugins/baremetal/debugservers/gdb/gdbserverprovider.cpp b/src/plugins/baremetal/debugservers/gdb/gdbserverprovider.cpp index c75b2c89dd1..7596820a965 100644 --- a/src/plugins/baremetal/debugservers/gdb/gdbserverprovider.cpp +++ b/src/plugins/baremetal/debugservers/gdb/gdbserverprovider.cpp @@ -209,18 +209,16 @@ bool GdbServerProvider::aboutToRun(DebuggerRunTool *runTool, return true; } -void GdbServerProvider::addTargetRunner(Debugger::DebuggerRunTool *runTool, - ProjectExplorer::RunControl *runControl) const +RunWorker *GdbServerProvider::targetRunner(RunControl *runControl) const { if (m_startupMode != GdbServerProvider::StartupOnNetwork) - return; + return nullptr; Runnable r; r.setCommandLine(command()); // Command arguments are in host OS style as the bare metal's GDB servers are launched // on the host, not on that target. - const auto runner = new GdbServerProviderRunner(runControl, r); - runTool->addStartDependency(runner); + return new GdbServerProviderRunner(runControl, r); } void GdbServerProvider::updateDevice(ProjectExplorer::IDevice *dev) const diff --git a/src/plugins/baremetal/debugservers/gdb/gdbserverprovider.h b/src/plugins/baremetal/debugservers/gdb/gdbserverprovider.h index dbd8f7a972e..71ffab85985 100644 --- a/src/plugins/baremetal/debugservers/gdb/gdbserverprovider.h +++ b/src/plugins/baremetal/debugservers/gdb/gdbserverprovider.h @@ -66,8 +66,8 @@ public: bool aboutToRun(Debugger::DebuggerRunTool *runTool, QString &errorMessage) const final; - void addTargetRunner(Debugger::DebuggerRunTool *runTool, - ProjectExplorer::RunControl *runControl) const final; + ProjectExplorer::RunWorker *targetRunner( + ProjectExplorer::RunControl *runControl) const final; void updateDevice(ProjectExplorer::IDevice *dev) const final; bool isValid() const override; diff --git a/src/plugins/baremetal/idebugserverprovider.h b/src/plugins/baremetal/idebugserverprovider.h index 78d414d7e05..638b997bff3 100644 --- a/src/plugins/baremetal/idebugserverprovider.h +++ b/src/plugins/baremetal/idebugserverprovider.h @@ -45,12 +45,12 @@ class DebuggerRunTool; } namespace ProjectExplorer { +class DeviceProcess; class IDevice; class RunControl; -class DeviceProcess; +class RunWorker; } - namespace BareMetal { namespace Internal { @@ -81,8 +81,8 @@ public: virtual bool aboutToRun(Debugger::DebuggerRunTool *runTool, QString &errorMessage) const = 0; - virtual void addTargetRunner(Debugger::DebuggerRunTool *runTool, - ProjectExplorer::RunControl *runControl) const = 0; + virtual ProjectExplorer::RunWorker *targetRunner( + ProjectExplorer::RunControl *runControl) const = 0; virtual void updateDevice(ProjectExplorer::IDevice *dev) const = 0; virtual bool isValid() const = 0;