aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/ios/iosrunner.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/ios/iosrunner.cpp')
-rw-r--r--src/plugins/ios/iosrunner.cpp25
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