Start and stop the process launcher in tst_qtcprocess

Change-Id: Ib28450d10c699abe3964f8bef2ff24baae0074f7
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Jarek Kobus
2021-08-13 13:30:43 +02:00
parent 328af3c08a
commit 9966cc4bcc
6 changed files with 35 additions and 11 deletions

View File

@@ -90,6 +90,7 @@ public:
void handleProcessStderr();
Internal::LauncherSocket *socket() const { return m_socket; }
void setPathToLauncher(const QString &path) { if (!path.isEmpty()) m_pathToLauncher = path; }
signals:
void errorOccurred(const QString &error);
@@ -97,13 +98,14 @@ private:
QLocalServer * const m_server;
Internal::LauncherSocket *const m_socket;
Internal::LauncherProcess *m_process = nullptr;
QString m_pathToLauncher;
int m_startRequests = 0;
};
LauncherInterfacePrivate::LauncherInterfacePrivate()
: m_server(new QLocalServer(this)), m_socket(new LauncherSocket(this))
{
m_pathToLauncher = qApp->applicationDirPath() + '/' + QLatin1String(RELATIVE_LIBEXEC_PATH);
QObject::connect(m_server, &QLocalServer::newConnection,
this, &LauncherInterfacePrivate::handleNewConnection);
}
@@ -130,10 +132,8 @@ void LauncherInterfacePrivate::doStart()
this, &LauncherInterfacePrivate::handleProcessFinished);
connect(m_process, &QProcess::readyReadStandardError,
this, &LauncherInterfacePrivate::handleProcessStderr);
m_process->start(qApp->applicationDirPath() + QLatin1Char('/')
+ QLatin1String(RELATIVE_LIBEXEC_PATH)
+ QLatin1String("/qtcreator_processlauncher"),
QStringList(m_server->fullServerName()));
const QString launcherPath = m_pathToLauncher + QLatin1String("/qtcreator_processlauncher");
m_process->start(launcherPath, QStringList(m_server->fullServerName()));
}
void LauncherInterfacePrivate::doStop()
@@ -208,9 +208,10 @@ LauncherInterface::~LauncherInterface()
m_thread.wait();
}
void LauncherInterface::startLauncher()
void LauncherInterface::startLauncher(const QString &pathToLauncher)
{
// Call in launcher's thread.
instance().m_private->setPathToLauncher(pathToLauncher);
QMetaObject::invokeMethod(instance().m_private, &LauncherInterfacePrivate::doStart);
}