summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Griebl <robert.griebl@pelagicore.com>2018-02-20 11:58:54 +0100
committerJędrzej Nowacki <jedrzej.nowacki@qt.io>2018-02-20 12:06:25 +0000
commitf741a32756dcb6cc740160265d76da5375e8e918 (patch)
tree7d18998a177c9adcd02aa4afa248e839a5900093
parent365b41712099dfb7bb59dfa0aada92be97a2a664 (diff)
downloadqtapplicationmanager-f741a32756dcb6cc740160265d76da5375e8e918.tar.gz
Preserve the PID of apps when they crash for better error output
Task-number: QTAUTO-515 Change-Id: I039199d6bc3cd4964c692dd3448c6d17b3c29998 Reviewed-by: Dominik Holland <dominik.holland@pelagicore.com>
-rw-r--r--src/manager-lib/processcontainer.cpp8
-rw-r--r--src/manager-lib/processcontainer.h1
2 files changed, 7 insertions, 2 deletions
diff --git a/src/manager-lib/processcontainer.cpp b/src/manager-lib/processcontainer.cpp
index 847dbfea..4b0b1a7e 100644
--- a/src/manager-lib/processcontainer.cpp
+++ b/src/manager-lib/processcontainer.cpp
@@ -68,7 +68,11 @@ HostProcess::~HostProcess()
void HostProcess::start(const QString &program, const QStringList &arguments)
{
- connect(&m_process, &QProcess::started, this, &HostProcess::started);
+ connect(&m_process, &QProcess::started, this, [this]() {
+ // we to cache the pid in order to have it available after the process crashed
+ m_pid = m_process.processId();
+ emit started();
+ });
connect(&m_process, static_cast<void (QProcess::*)(QProcess::ProcessError)>(&QProcess::error),
this, &HostProcess::errorOccured);
connect(&m_process, static_cast<void (QProcess::*)(int,QProcess::ExitStatus)>(&QProcess::finished),
@@ -122,7 +126,7 @@ void HostProcess::terminate()
qint64 HostProcess::processId() const
{
- return m_process.processId();
+ return m_pid;
}
QProcess::ProcessState HostProcess::state() const
diff --git a/src/manager-lib/processcontainer.h b/src/manager-lib/processcontainer.h
index 598b4f37..d9dfacc0 100644
--- a/src/manager-lib/processcontainer.h
+++ b/src/manager-lib/processcontainer.h
@@ -97,6 +97,7 @@ private:
};
MyQProcess m_process;
+ qint64 m_pid = 0;
};
class ProcessContainer : public AbstractContainer