Avoid using `QProcess::ProcessError` to avoid `QMetaMethod::invoke` error

Otherwise `QMetaMethod::invoke` wouldn't be able to handle it:
```
QMetaMethod::invoke: Unable to handle unregistered datatype 'QProcess::ProcessError'
```
This commit is contained in:
Martchus 2021-06-17 21:17:21 +02:00
parent e972cd5b29
commit d91448dfb4
2 changed files with 7 additions and 7 deletions

View File

@ -303,10 +303,10 @@ Data::SyncthingProcessInternalData::Lock::operator bool() const
/*! /*!
* \brief Internally handles an error. * \brief Internally handles an error.
*/ */
void SyncthingProcess::handleError(QProcess::ProcessError error, const QString &errorMessage, bool closed) void SyncthingProcess::handleError(int error, const QString &errorMessage, bool closed)
{ {
setErrorString(errorMessage); setErrorString(errorMessage);
errorOccurred(error); errorOccurred(static_cast<QProcess::ProcessError>(error));
if (closed) { if (closed) {
setOpenMode(QIODevice::NotOpen); setOpenMode(QIODevice::NotOpen);
} }
@ -396,7 +396,7 @@ void SyncthingProcess::start(const QString &program, const QStringList &argument
const auto msg = ec.message(); const auto msg = ec.message();
std::cerr << EscapeCodes::Phrases::Error << "Launched process " << m_process->child.native_handle() << " exited with error: " << msg std::cerr << EscapeCodes::Phrases::Error << "Launched process " << m_process->child.native_handle() << " exited with error: " << msg
<< EscapeCodes::Phrases::End; << EscapeCodes::Phrases::End;
QMetaObject::invokeMethod(this, "handleError", Qt::QueuedConnection, Q_ARG(QProcess::ProcessError, QProcess::Crashed), QMetaObject::invokeMethod(this, "handleError", Qt::QueuedConnection, Q_ARG(int, QProcess::Crashed),
Q_ARG(QString, QString::fromStdString(msg)), Q_ARG(bool, false)); Q_ARG(QString, QString::fromStdString(msg)), Q_ARG(bool, false));
} }
}; };
@ -416,8 +416,8 @@ void SyncthingProcess::start(const QString &program, const QStringList &argument
const auto error = ec == std::errc::timed_out || ec == std::errc::stream_timeout ? QProcess::Timedout : QProcess::Crashed; const auto error = ec == std::errc::timed_out || ec == std::errc::stream_timeout ? QProcess::Timedout : QProcess::Crashed;
const auto msg = ec.message(); const auto msg = ec.message();
std::cerr << EscapeCodes::Phrases::Error << "Unable to launch process: " << msg << EscapeCodes::Phrases::End; std::cerr << EscapeCodes::Phrases::Error << "Unable to launch process: " << msg << EscapeCodes::Phrases::End;
QMetaObject::invokeMethod(this, "handleError", Qt::QueuedConnection, Q_ARG(QProcess::ProcessError, error), QMetaObject::invokeMethod(
Q_ARG(QString, QString::fromStdString(msg)), Q_ARG(bool, false)); this, "handleError", Qt::QueuedConnection, Q_ARG(int, error), Q_ARG(QString, QString::fromStdString(msg)), Q_ARG(bool, false));
}; };
// start the process within a new process group (or job object under Windows) // start the process within a new process group (or job object under Windows)
@ -535,7 +535,7 @@ void SyncthingProcess::bufferOutput()
const auto msg = ec.message(); const auto msg = ec.message();
std::cerr << EscapeCodes::Phrases::Error << "Unable to read output of process " << m_process->child.native_handle() << ": " << msg std::cerr << EscapeCodes::Phrases::Error << "Unable to read output of process " << m_process->child.native_handle() << ": " << msg
<< EscapeCodes::Phrases::End; << EscapeCodes::Phrases::End;
QMetaObject::invokeMethod(this, "handleError", Qt::QueuedConnection, Q_ARG(QProcess::ProcessError, QProcess::ReadError), QMetaObject::invokeMethod(this, "handleError", Qt::QueuedConnection, Q_ARG(int, QProcess::ReadError),
Q_ARG(QString, QString::fromStdString(msg)), Q_ARG(bool, true)); Q_ARG(QString, QString::fromStdString(msg)), Q_ARG(bool, true));
} }
if (!ec || bytesRead) { if (!ec || bytesRead) {

View File

@ -84,7 +84,7 @@ private Q_SLOTS:
void handleFinished(int exitCode, QProcess::ExitStatus exitStatus); void handleFinished(int exitCode, QProcess::ExitStatus exitStatus);
void killToRestart(); void killToRestart();
#ifdef LIB_SYNCTHING_CONNECTOR_BOOST_PROCESS #ifdef LIB_SYNCTHING_CONNECTOR_BOOST_PROCESS
void handleError(QProcess::ProcessError error, const QString &errorMessage, bool closed); void handleError(int error, const QString &errorMessage, bool closed);
void bufferOutput(); void bufferOutput();
void handleLeftoverProcesses(); void handleLeftoverProcesses();
#endif #endif