diff options
author | Petr Mrázek <peterix@gmail.com> | 2016-08-08 09:35:39 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2016-08-10 00:28:33 +0200 |
commit | c60db13af73523c08353f819cc2a8441a7ddbada (patch) | |
tree | 0acf18894b9d1e5493e45c2dc48ea665740e3ac4 | |
parent | fc198dd3085a2cd33fbaa7a3d2c95c2c8d3ee31a (diff) | |
download | MultiMC-c60db13af73523c08353f819cc2a8441a7ddbada.tar MultiMC-c60db13af73523c08353f819cc2a8441a7ddbada.tar.gz MultiMC-c60db13af73523c08353f819cc2a8441a7ddbada.tar.lz MultiMC-c60db13af73523c08353f819cc2a8441a7ddbada.tar.xz MultiMC-c60db13af73523c08353f819cc2a8441a7ddbada.zip |
NOISSUE Do not kill running instances when MultiMC shuts down
-rw-r--r-- | api/logic/launch/LoggedProcess.cpp | 13 | ||||
-rw-r--r-- | api/logic/launch/LoggedProcess.h | 7 | ||||
-rw-r--r-- | api/logic/minecraft/launch/DirectJavaLaunch.cpp | 3 | ||||
-rw-r--r-- | api/logic/minecraft/launch/LauncherPartLaunch.cpp | 3 |
4 files changed, 24 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; }; diff --git a/api/logic/minecraft/launch/DirectJavaLaunch.cpp b/api/logic/minecraft/launch/DirectJavaLaunch.cpp index 1f1fb414..1f82a3f8 100644 --- a/api/logic/minecraft/launch/DirectJavaLaunch.cpp +++ b/api/logic/minecraft/launch/DirectJavaLaunch.cpp @@ -51,6 +51,9 @@ void DirectJavaLaunch::executeTask() m_process.setProcessEnvironment(instance->createEnvironment()); + // make detachable - this will keep the process running even if the object is destroyed + m_process.setDetachable(true); + auto mcArgs = minecraftInstance->processMinecraftArgs(m_session); args.append(mcArgs); diff --git a/api/logic/minecraft/launch/LauncherPartLaunch.cpp b/api/logic/minecraft/launch/LauncherPartLaunch.cpp index bc71fe28..398b5515 100644 --- a/api/logic/minecraft/launch/LauncherPartLaunch.cpp +++ b/api/logic/minecraft/launch/LauncherPartLaunch.cpp @@ -40,6 +40,9 @@ void LauncherPartLaunch::executeTask() m_process.setProcessEnvironment(instance->createEnvironment()); + // make detachable - this will keep the process running even if the object is destroyed + m_process.setDetachable(true); + args << "-jar" << FS::PathCombine(QCoreApplication::applicationDirPath(), "jars", "NewLaunch.jar"); QString wrapperCommand = instance->getWrapperCommand(); |