summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2022-06-20 18:22:50 +0200
committerJarek Kobus <jaroslaw.kobus@qt.io>2022-06-22 10:44:49 +0000
commitbbbb1fd0a51896570e0752055478d02ef4018070 (patch)
treee99f940ab55614ad4d2adde074dd226222267ca5 /src
parentfdf81b8768d0bc78ba8c3d0a8fbf3c729ba48e5d (diff)
downloadqt-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.h1
-rw-r--r--src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp30
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);
- }
}
}