summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2016-08-03 16:27:22 +0200
committerUlf Hermann <ulf.hermann@qt.io>2016-08-11 08:43:07 +0000
commite84abe3af1335c000b8f581c351b5e387101ea8f (patch)
tree4970157cb68c596a7ac44f3c5c335ff634120f9b
parent252a3f89c61ae9a14427f66788b26597e6d24a6c (diff)
downloadqt-creator-e84abe3af1335c000b8f581c351b5e387101ea8f.tar.gz
Debugger: Only use random QML port if none was given
This is a cherry-pick of 20db17e4f07c298874f01eb0f9ebeb26a7887fdd from 4.1. The problem also occurs in 4.0 and as another version of 4.0 might be released, we should fix it there, too. Change-Id: I3cf42abfa9d0ea5812495be6e2728264dc115ba9 Task-number: QTCREATORBUG-16708 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r--src/plugins/debugger/debuggerruncontrol.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/plugins/debugger/debuggerruncontrol.cpp b/src/plugins/debugger/debuggerruncontrol.cpp
index 9f077c4652..e925f7896f 100644
--- a/src/plugins/debugger/debuggerruncontrol.cpp
+++ b/src/plugins/debugger/debuggerruncontrol.cpp
@@ -450,15 +450,18 @@ void DebuggerRunControlCreator::enrich(const RunConfiguration *runConfig, const
if (m_rp.languages & QmlLanguage) {
if (m_rp.device && m_rp.device->type() == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE) {
- QTcpServer server;
- const bool canListen = server.listen(QHostAddress::LocalHost)
- || server.listen(QHostAddress::LocalHostIPv6);
- if (!canListen) {
- m_errors.append(DebuggerPlugin::tr("Not enough free ports for QML debugging.") + QLatin1Char(' '));
- return;
+ if (m_rp.qmlServerAddress.isEmpty() || m_rp.qmlServerPort == InvalidPort) {
+ QTcpServer server;
+ const bool canListen = server.listen(QHostAddress::LocalHost)
+ || server.listen(QHostAddress::LocalHostIPv6);
+ if (!canListen) {
+ m_errors.append(DebuggerPlugin::tr("Not enough free ports for QML debugging.")
+ + QLatin1Char(' '));
+ return;
+ }
+ m_rp.qmlServerAddress = server.serverAddress().toString();
+ m_rp.qmlServerPort = server.serverPort();
}
- m_rp.qmlServerAddress = server.serverAddress().toString();
- m_rp.qmlServerPort = server.serverPort();
// Makes sure that all bindings go through the JavaScript engine, so that
// breakpoints are actually hit!