qmldesigner: fix error output at puppet crashes

Change-Id: I6c2a8d655e996e6f935d069a97a45e64ad0ef5b9
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
This commit is contained in:
Tim Jenssen
2021-06-25 19:55:52 +02:00
parent fd71cbf135
commit 2eef40bb85
8 changed files with 14 additions and 19 deletions

View File

@@ -66,9 +66,9 @@ bool BaseConnectionManager::isActive() const
void BaseConnectionManager::showCannotConnectToPuppetWarningAndSwitchToEditMode() {}
void BaseConnectionManager::processFinished()
void BaseConnectionManager::processFinished(const QString &reason)
{
processFinished(-1, QProcess::CrashExit);
processFinished(-1, QProcess::CrashExit, reason);
}
void BaseConnectionManager::writeCommandToIODevice(const QVariant &command,

View File

@@ -64,7 +64,7 @@ protected:
void dispatchCommand(const QVariant &command, Connection &connection) override;
virtual void showCannotConnectToPuppetWarningAndSwitchToEditMode();
using ConnectionManagerInterface::processFinished;
void processFinished();
void processFinished(const QString &reason);
static void writeCommandToIODevice(const QVariant &command,
QIODevice *ioDevice,
unsigned int commandCounter);

View File

@@ -54,17 +54,17 @@ void CapturingConnectionManager::setUp(NodeInstanceServerInterface *nodeInstance
}
}
void CapturingConnectionManager::processFinished(int exitCode, QProcess::ExitStatus exitStatus)
void CapturingConnectionManager::processFinished(int exitCode, QProcess::ExitStatus exitStatus, const QString &connectionName)
{
if (m_captureFileForTest.isOpen()) {
m_captureFileForTest.close();
Core::AsynchronousMessageBox::warning(
tr("QML Emulation Layer (QML Puppet) Crashed"),
tr("QML Emulation Layer (QML Puppet - %1) Crashed").arg(connectionName),
tr("You are recording a puppet stream and the emulations layer crashed. "
"It is recommended to reopen the Qt Quick Designer and start again."));
}
InteractiveConnectionManager::processFinished(exitCode, exitStatus);
InteractiveConnectionManager::processFinished(exitCode, exitStatus, connectionName);
}
void CapturingConnectionManager::writeCommand(const QVariant &command)

View File

@@ -39,7 +39,7 @@ public:
ProjectExplorer::Target *target,
AbstractView *view) override;
void processFinished(int exitCode, QProcess::ExitStatus exitStatus) override;
void processFinished(int exitCode, QProcess::ExitStatus exitStatus, const QString &connectionName) override;
void writeCommand(const QVariant &command) override;

View File

@@ -69,7 +69,7 @@ void ConnectionManager::setUp(NodeInstanceServerInterface *nodeInstanceServerPro
socketToken,
[&] { printProcessOutput(connection.qmlPuppetProcess.get(), connection.name); },
[&](int exitCode, QProcess::ExitStatus exitStatus) {
processFinished(exitCode, exitStatus);
processFinished(exitCode, exitStatus, connection.name);
});
const int second = 1000;
@@ -122,15 +122,10 @@ void ConnectionManager::writeCommand(const QVariant &command)
m_writeCommandCounter++;
}
void ConnectionManager::processFinished(int exitCode, QProcess::ExitStatus exitStatus)
void ConnectionManager::processFinished(int exitCode, QProcess::ExitStatus exitStatus, const QString &connectionName)
{
auto finishedProcess = qobject_cast<QProcess *>(sender());
if (finishedProcess)
qWarning() << "Process" << (exitStatus == QProcess::CrashExit ? "crashed:" : "finished:")
<< finishedProcess->arguments() << "exitCode:" << exitCode;
else
qWarning() << "Process" << (exitStatus == QProcess::CrashExit ? "crashed:" : "finished:")
<< sender() << "exitCode:" << exitCode;
qWarning() << "Process" << connectionName <<(exitStatus == QProcess::CrashExit ? "crashed:" : "finished:")
<< "with exitCode:" << exitCode;
writeCommand(QVariant::fromValue(EndPuppetCommand()));

View File

@@ -58,7 +58,7 @@ public:
protected:
using BaseConnectionManager::processFinished;
void processFinished(int exitCode, QProcess::ExitStatus exitStatus) override;
void processFinished(int exitCode, QProcess::ExitStatus exitStatus, const QString &connectionName) override;
std::vector<Connection> &connections() { return m_connections; }
quint32 &writeCommandCounter() { return m_writeCommandCounter; }

View File

@@ -79,7 +79,7 @@ public:
protected:
virtual void dispatchCommand(const QVariant &command, Connection &connection) = 0;
virtual void processFinished(int exitCode, QProcess::ExitStatus exitStatus) = 0;
virtual void processFinished(int exitCode, QProcess::ExitStatus exitStatus, const QString &connectionName) = 0;
};
} // namespace QmlDesigner

View File

@@ -107,7 +107,7 @@ void InteractiveConnectionManager::puppetTimeout(Connection &connection)
return;
}
processFinished();
processFinished(connection.name + "_timeout");
}
void InteractiveConnectionManager::puppetAlive(Connection &connection)