summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVikas Pachdha <vikas.pachdha@qt.io>2017-02-17 14:36:04 +0100
committerVikas Pachdha <vikas.pachdha@qt.io>2017-03-02 15:52:15 +0000
commit13492fea66499ab586b66cd4ef99cf7058979c49 (patch)
tree6d54f0ebf3f13de1ce43387ceaf540ac2062de08
parent33162e324802e9e35c07612ffe17219102a97ce2 (diff)
downloadqt-creator-13492fea66499ab586b66cd4ef99cf7058979c49.tar.gz
Android: Fix app waiting for qml engine connection
android app in mixed mode debugging sometimes keeps waiting for the qml engine connection. Task-number: QTCREATORBUG-17718 Change-Id: Iee87cd0a6d67babaf08e62a6e106ec22fda430cd Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
-rw-r--r--src/plugins/debugger/qml/qmlengine.cpp23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp
index 83f3fed071..e68b261ac6 100644
--- a/src/plugins/debugger/qml/qmlengine.cpp
+++ b/src/plugins/debugger/qml/qmlengine.cpp
@@ -569,15 +569,32 @@ void QmlEngine::notifyEngineRemoteSetupFinished(const RemoteSetupResult &result)
if (result.qmlServerPort.isValid())
runParameters().qmlServer.port = result.qmlServerPort;
- notifyEngineSetupOk();
+ switch (state()) {
+ case InferiorSetupOk:
+ // FIXME: This is not a legal transition, but we need to
+ // get to EngineSetupOk somehow from InferiorSetupOk.
+ // fallthrough. QTCREATORBUG-14089.
+ case EngineSetupRequested:
+ notifyEngineSetupOk();
+ break;
+ case EngineSetupOk:
+ case EngineRunRequested:
+ // QTCREATORBUG-17718: On Android while doing debugging in mixed mode, the QML debug engine
+ // sometimes reports EngineSetupOK after the EngineRunRequested thus overwriting the state
+ // which eventually results into app to waiting for the QML engine connection.
+ // Skipping the EngineSetupOK in aforementioned case.
+ // Nothing to do here. The setup is already done.
+ break;
+ default:
+ QTC_ASSERT(false, qDebug() << "Unexpected state" << state());
+ }
// The remote setup can take while especialy with mixed debugging.
// Just waiting for 8 seconds is not enough. Increase the timeout
// to 60 s
// In case we get an output the d->outputParser will start the connection.
d->noDebugOutputTimer.setInterval(60000);
- }
- else {
+ } else {
if (isMasterEngine())
QMessageBox::critical(ICore::dialogParent(), tr("Failed to start application"),
tr("Application startup failed: %1").arg(result.reason));