diff options
Diffstat (limited to 'src/plugins/ios/iosrunner.cpp')
-rw-r--r-- | src/plugins/ios/iosrunner.cpp | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/plugins/ios/iosrunner.cpp b/src/plugins/ios/iosrunner.cpp index 23400d34c7..7ecd50b836 100644 --- a/src/plugins/ios/iosrunner.cpp +++ b/src/plugins/ios/iosrunner.cpp @@ -74,9 +74,29 @@ using namespace Utils; namespace Ios { namespace Internal { +static void stopRunningRunControl(RunControl *runControl) +{ + static QMap<Core::Id, QPointer<RunControl>> activeRunControls; + + RunConfiguration *runConfig = runControl->runConfiguration(); + Target *target = runConfig->target(); + Core::Id devId = DeviceKitInformation::deviceId(target->kit()); + + // The device can only run an application at a time, if an app is running stop it. + if (activeRunControls.contains(devId)) { + if (QPointer<RunControl> activeRunControl = activeRunControls[devId]) + activeRunControl->initiateStop(); + activeRunControls.remove(devId); + } + + if (devId.isValid()) + activeRunControls[devId] = runControl; +} + IosRunner::IosRunner(RunControl *runControl) : RunWorker(runControl) { + stopRunningRunControl(runControl); auto runConfig = qobject_cast<IosRunConfiguration *>(runControl->runConfiguration()); m_bundleDir = runConfig->bundleDirectory().toString(); m_arguments = QStringList(runConfig->commandLineArguments()); @@ -513,10 +533,5 @@ void IosDebugSupport::start() DebuggerRunTool::start(); } -void IosDebugSupport::onFinished() -{ - abortDebugger(); -} - } // namespace Internal } // namespace Ios |