Remove the timeout for pre/post commands. Fixes #107
This commit is contained in:
parent
de2eb3fc54
commit
a74f3b553a
@ -259,7 +259,14 @@ void MinecraftProcess::finish(int code, ExitStatus status)
|
|||||||
void MinecraftProcess::killMinecraft()
|
void MinecraftProcess::killMinecraft()
|
||||||
{
|
{
|
||||||
killed = true;
|
killed = true;
|
||||||
kill();
|
if (m_prepostlaunchprocess.state() == QProcess::Running)
|
||||||
|
{
|
||||||
|
m_prepostlaunchprocess.kill();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
kill();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MinecraftProcess::preLaunch()
|
bool MinecraftProcess::preLaunch()
|
||||||
@ -271,8 +278,10 @@ bool MinecraftProcess::preLaunch()
|
|||||||
// Launch
|
// Launch
|
||||||
emit log(tr("Running Pre-Launch command: %1").arg(prelaunch_cmd));
|
emit log(tr("Running Pre-Launch command: %1").arg(prelaunch_cmd));
|
||||||
m_prepostlaunchprocess.start(prelaunch_cmd);
|
m_prepostlaunchprocess.start(prelaunch_cmd);
|
||||||
// Wait
|
if (!waitForPrePost())
|
||||||
m_prepostlaunchprocess.waitForFinished();
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
// Flush console window
|
// Flush console window
|
||||||
if (!m_err_leftover.isEmpty())
|
if (!m_err_leftover.isEmpty())
|
||||||
{
|
{
|
||||||
@ -310,7 +319,10 @@ bool MinecraftProcess::postLaunch()
|
|||||||
postlaunch_cmd = substituteVariables(postlaunch_cmd);
|
postlaunch_cmd = substituteVariables(postlaunch_cmd);
|
||||||
emit log(tr("Running Post-Launch command: %1").arg(postlaunch_cmd));
|
emit log(tr("Running Post-Launch command: %1").arg(postlaunch_cmd));
|
||||||
m_prepostlaunchprocess.start(postlaunch_cmd);
|
m_prepostlaunchprocess.start(postlaunch_cmd);
|
||||||
m_prepostlaunchprocess.waitForFinished();
|
if (!waitForPrePost())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
// Flush console window
|
// Flush console window
|
||||||
if (!m_err_leftover.isEmpty())
|
if (!m_err_leftover.isEmpty())
|
||||||
{
|
{
|
||||||
@ -338,6 +350,23 @@ bool MinecraftProcess::postLaunch()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MinecraftProcess::waitForPrePost()
|
||||||
|
{
|
||||||
|
m_prepostlaunchprocess.waitForStarted();
|
||||||
|
QEventLoop eventLoop;
|
||||||
|
auto finisher = [this, &eventLoop](QProcess::ProcessState state)
|
||||||
|
{
|
||||||
|
if (state == QProcess::NotRunning)
|
||||||
|
{
|
||||||
|
eventLoop.quit();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
auto connection = connect(&m_prepostlaunchprocess, &QProcess::stateChanged, finisher);
|
||||||
|
int ret = eventLoop.exec();
|
||||||
|
disconnect(connection);
|
||||||
|
return ret == 0;
|
||||||
|
}
|
||||||
|
|
||||||
QMap<QString, QString> MinecraftProcess::getVariables() const
|
QMap<QString, QString> MinecraftProcess::getVariables() const
|
||||||
{
|
{
|
||||||
QMap<QString, QString> out;
|
QMap<QString, QString> out;
|
||||||
|
@ -133,6 +133,7 @@ protected:
|
|||||||
|
|
||||||
bool preLaunch();
|
bool preLaunch();
|
||||||
bool postLaunch();
|
bool postLaunch();
|
||||||
|
bool waitForPrePost();
|
||||||
QMap<QString, QString> getVariables() const;
|
QMap<QString, QString> getVariables() const;
|
||||||
QString substituteVariables(const QString &cmd) const;
|
QString substituteVariables(const QString &cmd) const;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user