From 403fe30a300be1028a3eb4b81cd0a2c95566847a Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 26 Jan 2016 14:09:13 +0100 Subject: [PATCH] RemoteLinux: Move portsUsedByDebugger() to DebuggerRunConfigurationAspect Change-Id: I0add29c3c69c4ba59cea159f32ca74be58bcee59 Reviewed-by: Tobias Hunger --- .../debugger/debuggerrunconfigurationaspect.cpp | 10 ++++++++++ .../debugger/debuggerrunconfigurationaspect.h | 2 ++ src/plugins/qnx/qnxruncontrolfactory.cpp | 9 ++++++--- .../abstractremotelinuxrunconfiguration.cpp | 13 ------------- .../abstractremotelinuxrunconfiguration.h | 2 -- .../remotelinux/remotelinuxruncontrolfactory.cpp | 6 +++++- 6 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/plugins/debugger/debuggerrunconfigurationaspect.cpp b/src/plugins/debugger/debuggerrunconfigurationaspect.cpp index 0257167210e..30a2ca80e89 100644 --- a/src/plugins/debugger/debuggerrunconfigurationaspect.cpp +++ b/src/plugins/debugger/debuggerrunconfigurationaspect.cpp @@ -292,6 +292,16 @@ bool DebuggerRunConfigurationAspect::isQmlDebuggingSpinboxSuppressed() const return dev->canAutoDetectPorts(); } +int DebuggerRunConfigurationAspect::portsUsedByDebugger() const +{ + int ports = 0; + if (useQmlDebugger()) + ++ports; + if (useCppDebugger()) + ++ports; + return ports; +} + void DebuggerRunConfigurationAspect::toMap(QVariantMap &map) const { map.insert(QLatin1String(USE_CPP_DEBUGGER_KEY), d.useCppDebugger == EnabledLanguage); diff --git a/src/plugins/debugger/debuggerrunconfigurationaspect.h b/src/plugins/debugger/debuggerrunconfigurationaspect.h index fcef969ac43..07bf2da3c28 100644 --- a/src/plugins/debugger/debuggerrunconfigurationaspect.h +++ b/src/plugins/debugger/debuggerrunconfigurationaspect.h @@ -74,6 +74,8 @@ public: void setUseMultiProcess(bool on); bool isQmlDebuggingSpinboxSuppressed() const; + int portsUsedByDebugger() const; + private: friend class Internal::DebuggerRunConfigWidget; DebuggerRunConfigurationAspectData d; diff --git a/src/plugins/qnx/qnxruncontrolfactory.cpp b/src/plugins/qnx/qnxruncontrolfactory.cpp index 719d66293ad..0f25dde50f4 100644 --- a/src/plugins/qnx/qnxruncontrolfactory.cpp +++ b/src/plugins/qnx/qnxruncontrolfactory.cpp @@ -105,14 +105,17 @@ bool QnxRunControlFactory::canRun(RunConfiguration *runConfiguration, Core::Id m return false; } - const QnxRunConfiguration * const rc = qobject_cast(runConfiguration); const QnxDeviceConfiguration::ConstPtr dev = DeviceKitInformation::device(runConfiguration->target()->kit()) .dynamicCast(); if (dev.isNull()) return false; - if (mode == ProjectExplorer::Constants::DEBUG_RUN_MODE || mode == ProjectExplorer::Constants::QML_PROFILER_RUN_MODE) - return rc->portsUsedByDebuggers() <= dev->freePorts().count(); + if (mode == ProjectExplorer::Constants::DEBUG_RUN_MODE + || mode == ProjectExplorer::Constants::QML_PROFILER_RUN_MODE) { + auto aspect = runConfiguration->extraAspect(); + int portsUsed = aspect ? aspect->portsUsedByDebugger() : 0; + return portsUsed <= dev->freePorts().count(); + } return true; } diff --git a/src/plugins/remotelinux/abstractremotelinuxrunconfiguration.cpp b/src/plugins/remotelinux/abstractremotelinuxrunconfiguration.cpp index 0608152da2d..567527fbc0a 100644 --- a/src/plugins/remotelinux/abstractremotelinuxrunconfiguration.cpp +++ b/src/plugins/remotelinux/abstractremotelinuxrunconfiguration.cpp @@ -41,17 +41,4 @@ AbstractRemoteLinuxRunConfiguration::AbstractRemoteLinuxRunConfiguration(Project } -int AbstractRemoteLinuxRunConfiguration::portsUsedByDebuggers() const -{ - int ports = 0; - Debugger::DebuggerRunConfigurationAspect *aspect - = extraAspect(); - if (aspect->useQmlDebugger()) - ++ports; - if (aspect->useCppDebugger()) - ++ports; - - return ports; -} - } // namespace RemoteLinux diff --git a/src/plugins/remotelinux/abstractremotelinuxrunconfiguration.h b/src/plugins/remotelinux/abstractremotelinuxrunconfiguration.h index d8c5da662f8..5931d8e31af 100644 --- a/src/plugins/remotelinux/abstractremotelinuxrunconfiguration.h +++ b/src/plugins/remotelinux/abstractremotelinuxrunconfiguration.h @@ -48,8 +48,6 @@ public: virtual QString workingDirectory() const = 0; virtual Utils::Environment environment() const = 0; - int portsUsedByDebuggers() const; - protected: AbstractRemoteLinuxRunConfiguration(ProjectExplorer::Target *parent, AbstractRemoteLinuxRunConfiguration *source); diff --git a/src/plugins/remotelinux/remotelinuxruncontrolfactory.cpp b/src/plugins/remotelinux/remotelinuxruncontrolfactory.cpp index 90a9d5c0684..be566019413 100644 --- a/src/plugins/remotelinux/remotelinuxruncontrolfactory.cpp +++ b/src/plugins/remotelinux/remotelinuxruncontrolfactory.cpp @@ -32,6 +32,7 @@ #include "remotelinuxruncontrol.h" #include +#include #include #include #include @@ -89,7 +90,10 @@ RunControl *RemoteLinuxRunControlFactory::create(RunConfiguration *runConfig, Co } auto * const rc = qobject_cast(runConfig); QTC_ASSERT(rc, return 0); - if (rc->portsUsedByDebuggers() > dev->freePorts().count()) { + + auto aspect = runConfig->extraAspect(); + int portsUsed = aspect ? aspect->portsUsedByDebugger() : 0; + if (portsUsed > dev->freePorts().count()) { *errorMessage = tr("Cannot debug: Not enough free ports available."); return 0; }