From d94636f8f9baa3f7c3a69aca4a8689d262873697 Mon Sep 17 00:00:00 2001 From: Denis Shienkov Date: Sun, 24 Nov 2019 11:53:49 +0300 Subject: [PATCH] BareMetal: Allow IDebugServerProvider to create own runner It is more correct way, because only the server providers know about own runners. Change-Id: I645f4696a5d9738d9cd578d642389124a0b0de60 Reviewed-by: hjk --- src/plugins/baremetal/baremetaldebugsupport.cpp | 3 ++- .../baremetal/debugservers/gdb/gdbserverprovider.cpp | 8 +++----- .../baremetal/debugservers/gdb/gdbserverprovider.h | 4 ++-- src/plugins/baremetal/idebugserverprovider.h | 8 ++++---- 4 files changed, 11 insertions(+), 12 deletions(-) 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;