kscreensaver: kill xscreensaver daemon process from KScreenSaver destructor

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2022-05-07 00:56:33 +03:00
parent 80c8635f23
commit 126fe06177
2 changed files with 11 additions and 1 deletions

View file

@ -19,17 +19,20 @@
#include "kscreensaver.h"
#include "screensaveradaptor.h"
#include <QDir>
#include <kdebug.h>
#include <kidletime.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
KScreenSaver::KScreenSaver(QObject *parent)
: QObject(parent),
m_objectsregistered(false),
m_serviceregistered(false),
m_xscreensaver(nullptr),
m_xscreensaverpid(0),
m_login1("org.freedesktop.login1", "/org/freedesktop/login1", "org.freedesktop.login1.Manager", QDBusConnection::systemBus()),
m_consolekit("org.freedesktop.ConsoleKit", "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager", QDBusConnection::systemBus())
{
@ -63,7 +66,9 @@ KScreenSaver::KScreenSaver(QObject *parent)
QProcess::startDetached(
QString::fromLatin1("xscreensaver"),
QStringList() << QString::fromLatin1("-nosplash")
QStringList() << QString::fromLatin1("-nosplash"),
QDir::currentPath(),
&m_xscreensaverpid
);
m_xscreensaver = new QProcess(this);
@ -124,6 +129,10 @@ KScreenSaver::~KScreenSaver()
connection.unregisterObject("/org/freedesktop/ScreenSaver");
}
if (m_xscreensaverpid > 0) {
::kill(pid_t(m_xscreensaverpid), SIGTERM);
}
if (m_xscreensaver) {
disconnect(m_xscreensaver, SIGNAL(readyReadStandardOutput()), this, SLOT(slotXScreenSaverOutput()));
disconnect(m_xscreensaver, SIGNAL(readyReadStandardError()), this, SLOT(slotXScreenSaverError()));

View file

@ -58,6 +58,7 @@ private:
bool m_objectsregistered;
bool m_serviceregistered;
QProcess* m_xscreensaver;
Q_PID m_xscreensaverpid;
QElapsedTimer m_activetimer;
QList<uint> m_inhibitions;
QDBusInterface m_login1;