diff options
Diffstat (limited to 'api/logic/launch')
-rw-r--r-- | api/logic/launch/LoggedProcess.cpp | 13 | ||||
-rw-r--r-- | api/logic/launch/LoggedProcess.h | 7 |
2 files changed, 18 insertions, 2 deletions
diff --git a/api/logic/launch/LoggedProcess.cpp b/api/logic/launch/LoggedProcess.cpp index 88ca40aa..f89b4acc 100644 --- a/api/logic/launch/LoggedProcess.cpp +++ b/api/logic/launch/LoggedProcess.cpp @@ -12,6 +12,14 @@ LoggedProcess::LoggedProcess(QObject *parent) : QProcess(parent) connect(this, &QProcess::stateChanged, this, &LoggedProcess::on_stateChange); } +LoggedProcess::~LoggedProcess() +{ + if(m_is_detachable) + { + setProcessState(QProcess::NotRunning); + } +} + QStringList reprocess(const QByteArray & data, QString & leftover) { QString str = leftover + QString::fromLocal8Bit(data); @@ -161,3 +169,8 @@ qint64 LoggedProcess::processId() const return pid(); #endif } + +void LoggedProcess::setDetachable(bool detachable) +{ + m_is_detachable = detachable; +} diff --git a/api/logic/launch/LoggedProcess.h b/api/logic/launch/LoggedProcess.h index baa53d79..c4e5c52c 100644 --- a/api/logic/launch/LoggedProcess.h +++ b/api/logic/launch/LoggedProcess.h @@ -38,13 +38,15 @@ public: }; public: - explicit LoggedProcess(QObject* parent = 0); - virtual ~LoggedProcess() {}; + explicit LoggedProcess(QObject* parent = 0); + virtual ~LoggedProcess(); State state() const; int exitCode() const; qint64 processId() const; + void setDetachable(bool detachable); + signals: void log(QStringList lines, MessageLevel::Enum level); void stateChanged(LoggedProcess::State state); @@ -73,4 +75,5 @@ private: State m_state = NotRunning; int m_exit_code = 0; bool m_is_aborting = false; + bool m_is_detachable = false; }; |