diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-02-08 21:27:57 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-02-08 21:27:57 +0100 |
commit | 6059f6f2a485ca3dddfedc55536e4f62f349a990 (patch) | |
tree | c86f5ec9be36071ec2da7371df03d1478b2a7bf1 /src/qmldebug/qqmlenginecontrolclient.cpp | |
parent | 62cf41dba5d037fb51224814dde12ad174ce4e72 (diff) | |
parent | 5cef1f6b505939976684c00e8deee614f2c20928 (diff) |
Merge remote-tracking branch 'origin/5.11' into dev
Change-Id: I32ae7587ddd92c53d078dc5bb69ca9281f801612
Diffstat (limited to 'src/qmldebug/qqmlenginecontrolclient.cpp')
-rw-r--r-- | src/qmldebug/qqmlenginecontrolclient.cpp | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/src/qmldebug/qqmlenginecontrolclient.cpp b/src/qmldebug/qqmlenginecontrolclient.cpp index fef4c81d93..8d62fafb94 100644 --- a/src/qmldebug/qqmlenginecontrolclient.cpp +++ b/src/qmldebug/qqmlenginecontrolclient.cpp @@ -108,32 +108,37 @@ void QQmlEngineControlClient::messageReceived(const QByteArray &data) if (!stream.atEnd()) stream >> name; - QQmlEngineControlClientPrivate::EngineState &state = d->blockedEngines[id]; - Q_ASSERT(state.blockers == 0); - Q_ASSERT(state.releaseCommand == QQmlEngineControlClientPrivate::InvalidCommand); + auto handleWaiting = [&]( + QQmlEngineControlClientPrivate::CommandType command, std::function<void()> emitter) { + QQmlEngineControlClientPrivate::EngineState &state = d->blockedEngines[id]; + Q_ASSERT(state.blockers == 0); + Q_ASSERT(state.releaseCommand == QQmlEngineControlClientPrivate::InvalidCommand); + state.releaseCommand = command; + emitter(); + if (state.blockers == 0) { + d->sendCommand(state.releaseCommand, id); + d->blockedEngines.remove(id); + } + }; switch (message) { case QQmlEngineControlClientPrivate::EngineAboutToBeAdded: - state.releaseCommand = QQmlEngineControlClientPrivate::StartWaitingEngine; - emit engineAboutToBeAdded(id, name); + handleWaiting(QQmlEngineControlClientPrivate::StartWaitingEngine, [&](){ + emit engineAboutToBeAdded(id, name); + }); break; case QQmlEngineControlClientPrivate::EngineAdded: emit engineAdded(id, name); break; case QQmlEngineControlClientPrivate::EngineAboutToBeRemoved: - state.releaseCommand = QQmlEngineControlClientPrivate::StopWaitingEngine; - emit engineAboutToBeRemoved(id, name); + handleWaiting(QQmlEngineControlClientPrivate::StopWaitingEngine, [&](){ + emit engineAboutToBeRemoved(id, name); + }); break; case QQmlEngineControlClientPrivate::EngineRemoved: emit engineRemoved(id, name); break; } - - if (state.blockers == 0 && - state.releaseCommand != QQmlEngineControlClientPrivate::InvalidCommand) { - d->sendCommand(state.releaseCommand, id); - d->blockedEngines.remove(id); - } } QQmlEngineControlClientPrivate::QQmlEngineControlClientPrivate(QQmlDebugConnection *connection) : |