diff options
author | Vikas Pachdha <vikas.pachdha@qt.io> | 2017-02-17 14:36:04 +0100 |
---|---|---|
committer | Vikas Pachdha <vikas.pachdha@qt.io> | 2017-03-02 15:52:15 +0000 |
commit | 13492fea66499ab586b66cd4ef99cf7058979c49 (patch) | |
tree | 6d54f0ebf3f13de1ce43387ceaf540ac2062de08 | |
parent | 33162e324802e9e35c07612ffe17219102a97ce2 (diff) | |
download | qt-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.cpp | 23 |
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)); |