diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2022-06-20 18:22:50 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2022-06-22 10:44:49 +0000 |
commit | bbbb1fd0a51896570e0752055478d02ef4018070 (patch) | |
tree | e99f940ab55614ad4d2adde074dd226222267ca5 /src | |
parent | fdf81b8768d0bc78ba8c3d0a8fbf3c729ba48e5d (diff) | |
download | qt-creator-bbbb1fd0a51896570e0752055478d02ef4018070.tar.gz |
NodeInstanceView: Connect to done() signal instead of finished()
Don't block the caller thread when starting the process.
Handle failed to start case inside done() handler.
Change-Id: I57e2fd1e069c3c6285603cbe30f42bad9d80cecd
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/qmldesigner/designercore/include/nodeinstanceview.h | 1 | ||||
-rw-r--r-- | src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp | 30 |
2 files changed, 7 insertions, 24 deletions
diff --git a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h index 62efb225d4..d6e3074666 100644 --- a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h +++ b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h @@ -39,7 +39,6 @@ #include <QElapsedTimer> #include <QHash> #include <QImage> -#include <QPointer> #include <QRectF> #include <QTime> #include <QTimer> diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index 1db2bc3cb6..bd6102243f 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -2035,14 +2035,12 @@ void NodeInstanceView::handleQsbProcessExit(Utils::QtcProcess *qsbProcess, const { --m_remainingQsbTargets; - QString errStr = qsbProcess->errorString(); - QByteArray stdErrStr = qsbProcess->readAllStandardError(); + const QString errStr = qsbProcess->errorString(); + const QByteArray stdErrStr = qsbProcess->readAllStandardError(); if (!errStr.isEmpty() || !stdErrStr.isEmpty()) { - Core::MessageManager::writeSilently( - QCoreApplication::translate("QmlDesigner::NodeInstanceView", - "Failed to generate QSB file for: %1") - .arg(shader)); + Core::MessageManager::writeSilently(QCoreApplication::translate( + "QmlDesigner::NodeInstanceView", "Failed to generate QSB file for: %1").arg(shader)); if (!errStr.isEmpty()) Core::MessageManager::writeSilently(errStr); if (!stdErrStr.isEmpty()) @@ -2138,26 +2136,12 @@ void NodeInstanceView::handleShaderChanges() args.append(outPath.toString()); args.append(shader); auto qsbProcess = new Utils::QtcProcess; + connect(qsbProcess, &Utils::QtcProcess::done, this, [this, qsbProcess, shader] { + handleQsbProcessExit(qsbProcess, shader); + }); qsbProcess->setWorkingDirectory(srcPath); qsbProcess->setCommand({m_qsbPath, args}); qsbProcess->start(); - - if (!qsbProcess->waitForStarted()) { - handleQsbProcessExit(qsbProcess, shader); - continue; - } - - if (qsbProcess->state() == QProcess::Running) { - connect(qsbProcess, &Utils::QtcProcess::finished, - [thisView = QPointer<NodeInstanceView>(this), qsbProcess, shader]() { - if (thisView) - thisView->handleQsbProcessExit(qsbProcess, shader); - else - qsbProcess->deleteLater(); - }); - } else { - handleQsbProcessExit(qsbProcess, shader); - } } } |