diff options
Diffstat (limited to '3c92e9206dc2e17fa5dc13f37be2926e9131ce94.patch')
-rw-r--r-- | 3c92e9206dc2e17fa5dc13f37be2926e9131ce94.patch | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/3c92e9206dc2e17fa5dc13f37be2926e9131ce94.patch b/3c92e9206dc2e17fa5dc13f37be2926e9131ce94.patch new file mode 100644 index 0000000..b94a535 --- /dev/null +++ b/3c92e9206dc2e17fa5dc13f37be2926e9131ce94.patch @@ -0,0 +1,163 @@ +From 3c92e9206dc2e17fa5dc13f37be2926e9131ce94 Mon Sep 17 00:00:00 2001 +From: Pier Luigi Fiorini <pierluigi.fiorini@liri.io> +Date: Sun, 7 Mar 2021 17:36:11 +0100 +Subject: [PATCH] Stop the helper process + +Make sure the helper process is stopped when shutting down. +--- + src/auth/Auth.cpp | 9 +++++++++ + src/auth/Auth.h | 5 +++++ + src/{daemon => common}/SignalHandler.cpp | 0 + src/{daemon => common}/SignalHandler.h | 0 + src/daemon/CMakeLists.txt | 3 ++- + src/daemon/Greeter.cpp | 2 ++ + src/helper/CMakeLists.txt | 2 ++ + src/helper/HelperApp.cpp | 14 +++++++++++++- + src/helper/HelperApp.h | 2 ++ + 9 files changed, 35 insertions(+), 2 deletions(-) + rename src/{daemon => common}/SignalHandler.cpp (100%) + rename src/{daemon => common}/SignalHandler.h (100%) + +diff --git a/src/auth/Auth.cpp b/src/auth/Auth.cpp +index caca3146..042d938b 100644 +--- a/src/auth/Auth.cpp ++++ b/src/auth/Auth.cpp +@@ -358,6 +358,15 @@ namespace SDDM { + args << QStringLiteral("--greeter"); + d->child->start(QStringLiteral("%1/sddm-helper").arg(QStringLiteral(LIBEXEC_INSTALL_DIR)), args); + } ++ ++ void Auth::stop() ++ { ++ if (d->child->state() != QProcess::NotRunning) { ++ d->child->terminate(); ++ if (!d->child->waitForFinished(5000)) ++ d->child->kill(); ++ } ++ } + } + + #include "Auth.moc" +diff --git a/src/auth/Auth.h b/src/auth/Auth.h +index 87f5f440..c3ce1a62 100644 +--- a/src/auth/Auth.h ++++ b/src/auth/Auth.h +@@ -157,6 +157,11 @@ namespace SDDM { + */ + void start(); + ++ /** ++ * Stops the process. ++ */ ++ void stop(); ++ + Q_SIGNALS: + void autologinChanged(); + void greeterChanged(); +diff --git a/src/daemon/SignalHandler.cpp b/src/common/SignalHandler.cpp +similarity index 100% +rename from src/daemon/SignalHandler.cpp +rename to src/common/SignalHandler.cpp +diff --git a/src/daemon/SignalHandler.h b/src/common/SignalHandler.h +similarity index 100% +rename from src/daemon/SignalHandler.h +rename to src/common/SignalHandler.h +diff --git a/src/daemon/CMakeLists.txt b/src/daemon/CMakeLists.txt +index 86d014be..4660a2f2 100644 +--- a/src/daemon/CMakeLists.txt ++++ b/src/daemon/CMakeLists.txt +@@ -13,6 +13,8 @@ set(DAEMON_SOURCES + ${CMAKE_SOURCE_DIR}/src/common/Session.cpp + ${CMAKE_SOURCE_DIR}/src/common/SocketWriter.cpp ++ ${CMAKE_SOURCE_DIR}/src/common/SignalHandler.cpp ++ ${CMAKE_SOURCE_DIR}/src/common/SignalHandler.h + ${CMAKE_SOURCE_DIR}/src/common/XauthUtils.cpp + ${CMAKE_SOURCE_DIR}/src/auth/Auth.cpp + ${CMAKE_SOURCE_DIR}/src/auth/AuthPrompt.cpp + ${CMAKE_SOURCE_DIR}/src/auth/AuthRequest.cpp +@@ -27,7 +29,6 @@ set(DAEMON_SOURCES + PowerManager.cpp + Seat.cpp + SeatManager.cpp +- SignalHandler.cpp + SocketServer.cpp + ) + +diff --git a/src/daemon/Greeter.cpp b/src/daemon/Greeter.cpp +index 436ecc3d..3b0ab2c3 100644 +--- a/src/daemon/Greeter.cpp ++++ b/src/daemon/Greeter.cpp +@@ -225,6 +225,8 @@ namespace SDDM { + // wait for finished + if (!m_process->waitForFinished(5000)) + m_process->kill(); ++ } else { ++ m_auth->stop(); + } + } + +diff --git a/src/helper/CMakeLists.txt b/src/helper/CMakeLists.txt +index 8914ea75..f63dcc92 100644 +--- a/src/helper/CMakeLists.txt ++++ b/src/helper/CMakeLists.txt +@@ -10,6 +10,8 @@ set(HELPER_SOURCES + ${CMAKE_SOURCE_DIR}/src/common/ConfigReader.cpp + ${CMAKE_SOURCE_DIR}/src/common/SafeDataStream.cpp ++ ${CMAKE_SOURCE_DIR}/src/common/SignalHandler.cpp ++ ${CMAKE_SOURCE_DIR}/src/common/SignalHandler.h + ${CMAKE_SOURCE_DIR}/src/common/XauthUtils.cpp + Backend.cpp + HelperApp.cpp + UserSession.cpp +diff --git a/src/helper/HelperApp.cpp b/src/helper/HelperApp.cpp +index 672359ae..12c3206e 100644 +--- a/src/helper/HelperApp.cpp ++++ b/src/helper/HelperApp.cpp +@@ -22,7 +22,7 @@ + #include "Backend.h" + #include "UserSession.h" + #include "SafeDataStream.h" +- ++#include "SignalHandler.h" + #include "MessageHandler.h" + #include "VirtualTerminal.h" + +@@ -50,6 +50,18 @@ namespace SDDM { + , m_socket(new QLocalSocket(this)) { + qInstallMessageHandler(HelperMessageHandler); + ++ m_signalHandler = new SignalHandler(this); ++ m_signalHandler->initialize(); ++ connect(m_signalHandler, &SignalHandler::sigintReceived, this, &HelperApp::quit); ++ connect(m_signalHandler, &SignalHandler::sigtermReceived, this, &HelperApp::quit); ++ ++ connect(this, &QCoreApplication::aboutToQuit, this, [this] { ++ m_session->terminate(); ++ if (!m_session->waitForFinished(5000)) ++ m_session->kill(); ++ m_backend->closeSession(); ++ }); ++ + QTimer::singleShot(0, this, SLOT(setUp())); + } + +diff --git a/src/helper/HelperApp.h b/src/helper/HelperApp.h +index 3742df12..d08fd37b 100644 +--- a/src/helper/HelperApp.h ++++ b/src/helper/HelperApp.h +@@ -31,6 +31,7 @@ class QLocalSocket; + namespace SDDM { + class Backend; + class UserSession; ++ class SignalHandler; + class HelperApp : public QCoreApplication + { + Q_OBJECT +@@ -63,6 +64,7 @@ namespace SDDM { + QString m_user { }; + // TODO: get rid of this in a nice clean way along the way with moving to user session X server + QByteArray m_cookie { }; ++ SignalHandler *m_signalHandler = nullptr; + + /*! + \brief Write utmp/wtmp/btmp records when a user logs in |