diff options
author | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2022-08-19 22:26:54 -0500 |
---|---|---|
committer | Zach van Rijn <me@zv.io> | 2022-10-21 18:34:02 -0500 |
commit | 40526154b709a62f45c832c02fb5d1ef56e16754 (patch) | |
tree | d0551f5e9fb34557ac3d16b62d1c24e0568e7e07 /user/sddm/allocate-vt.patch | |
parent | c27ed30b35be8092053a8e7210d10b4e0a8792e8 (diff) | |
download | packages-40526154b709a62f45c832c02fb5d1ef56e16754.tar.gz packages-40526154b709a62f45c832c02fb5d1ef56e16754.tar.bz2 packages-40526154b709a62f45c832c02fb5d1ef56e16754.tar.xz packages-40526154b709a62f45c832c02fb5d1ef56e16754.zip |
user/sddm: Update to 0.19.0
Fixes: #368, #646
Diffstat (limited to 'user/sddm/allocate-vt.patch')
-rw-r--r-- | user/sddm/allocate-vt.patch | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/user/sddm/allocate-vt.patch b/user/sddm/allocate-vt.patch new file mode 100644 index 000000000..34e599cd3 --- /dev/null +++ b/user/sddm/allocate-vt.patch @@ -0,0 +1,220 @@ +From f0b6dec66a6fc8cc6e21da57f81190843b483f76 Mon Sep 17 00:00:00 2001 +From: Pier Luigi Fiorini <pierluigi.fiorini@liri.io> +Date: Sun, 28 Feb 2021 12:07:33 +0100 +Subject: [PATCH] Allocate VT for the display + +Replace the old crude algorithm to find the next available VT with a +more reliable method using the VT_OPENQRY ioctl. + +General.MinimumVT setting is now obsolete and it's no longer used. +--- + CMakeLists.txt | 4 ---- + data/man/sddm.conf.rst.in | 2 +- + src/common/Configuration.h | 1 - + src/common/Constants.h.in | 1 - + src/daemon/Display.cpp | 7 +++++-- + src/daemon/Display.h | 2 +- + src/daemon/Seat.cpp | 38 +++----------------------------------- + src/daemon/Seat.h | 3 +-- + 8 files changed, 11 insertions(+), 47 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e52e0e903..9614b4e1e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -141,7 +141,6 @@ if(SYSTEMD_FOUND) + string(REGEX REPLACE "[ \t\n]+" "" SYSTEMD_SYSTEM_UNIT_DIR ${SYSTEMD_SYSTEM_UNIT_DIR}) + endif() + +- set(MINIMUM_VT 1) + set(HALT_COMMAND "/usr/bin/systemctl poweroff") + set(REBOOT_COMMAND "/usr/bin/systemctl reboot") + else() +@@ -159,7 +158,6 @@ if(ELOGIND_FOUND) + add_definitions(-DHAVE_ELOGIND) + set(CMAKE_AUTOMOC_MOC_OPTIONS -DHAVE_ELOGIND) + +- set(MINIMUM_VT 7) + set(HALT_COMMAND "/usr/bin/loginctl poweroff") + set(REBOOT_COMMAND "/usr/bin/loginctl reboot") + endif() +@@ -171,10 +169,8 @@ if (NOT ELOGIND_FOUND AND NOT SYSTEMD_FOUND) + # commands for shutdown and reboot. On FreeBSD, there are + # normally more getty's running than on Linux. + if("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD") +- set(MINIMUM_VT 9) + set(HALT_COMMAND "/sbin/shutdown -p now") + else() +- set(MINIMUM_VT 7) + set(HALT_COMMAND "/sbin/shutdown -h -P now") + endif() + set(REBOOT_COMMAND "/sbin/shutdown -r now") +diff --git a/data/man/sddm.conf.rst.in b/data/man/sddm.conf.rst.in +index bee07681d..1061540c0 100644 +--- a/data/man/sddm.conf.rst.in ++++ b/data/man/sddm.conf.rst.in +@@ -144,7 +144,7 @@ OPTIONS + Minimum virtual terminal number that will be used + by the first display. Virtual terminal number will + increase as new displays added. +- Default value is @MINIMUM_VT@. ++ This setting is no longer available since SDDM v0.20. + + `EnableHiDPI=` + Enables Qt's automatic HiDPI scaling. +diff --git a/src/common/Configuration.h b/src/common/Configuration.h +index cf44a629c..b79871988 100644 +--- a/src/common/Configuration.h ++++ b/src/common/Configuration.h +@@ -70,7 +70,6 @@ namespace SDDM { + Entry(UserAuthFile, QString, _S(".Xauthority"), _S("Path to the Xauthority file")); + Entry(DisplayCommand, QString, _S(DATA_INSTALL_DIR "/scripts/Xsetup"), _S("Path to a script to execute when starting the display server")); + Entry(DisplayStopCommand, QString, _S(DATA_INSTALL_DIR "/scripts/Xstop"), _S("Path to a script to execute when stopping the display server")); +- Entry(MinimumVT, int, MINIMUM_VT, _S("The lowest virtual terminal number that will be used.")); + Entry(EnableHiDPI, bool, false, _S("Enable Qt's automatic high-DPI scaling")); + ); + +diff --git a/src/common/Constants.h.in b/src/common/Constants.h.in +index e174b5bfc..480512880 100644 +--- a/src/common/Constants.h.in ++++ b/src/common/Constants.h.in +@@ -37,7 +37,6 @@ + #define SYSTEM_CONFIG_DIR "@SYSTEM_CONFIG_DIR@" + + #define LOG_FILE "@LOG_FILE@" +-#define MINIMUM_VT @MINIMUM_VT@ + + #define UID_MIN @UID_MIN@ + #define UID_MAX @UID_MAX@ +diff --git a/src/daemon/Display.cpp b/src/daemon/Display.cpp +index ed13bae79..3c77454fc 100644 +--- a/src/daemon/Display.cpp ++++ b/src/daemon/Display.cpp +@@ -46,6 +46,7 @@ + + #include "Login1Manager.h" + #include "Login1Session.h" ++#include "VirtualTerminal.h" + + #if defined(Q_OS_LINUX) + #include <utmp.h> +@@ -53,14 +54,16 @@ + #include <utmpx.h> + + namespace SDDM { +- Display::Display(const int terminalId, Seat *parent) : QObject(parent), +- m_terminalId(terminalId), ++ Display::Display(Seat *parent) : QObject(parent), + m_auth(new Auth(this)), + m_displayServer(new XorgDisplayServer(this)), + m_seat(parent), + m_socketServer(new SocketServer(this)), + m_greeter(new Greeter(this)) { + ++ // Allocate vt ++ m_terminalId = VirtualTerminal::setUpNewVt(); ++ + // respond to authentication requests + m_auth->setVerbose(true); + connect(m_auth, &Auth::requestChanged, this, &Display::slotRequestChanged); +diff --git a/src/daemon/Display.h b/src/daemon/Display.h +index 8b3c2c635..61dd9f630 100644 +--- a/src/daemon/Display.h ++++ b/src/daemon/Display.h +@@ -41,7 +41,7 @@ namespace SDDM { + Q_OBJECT + Q_DISABLE_COPY(Display) + public: +- explicit Display(int terminalId, Seat *parent); ++ explicit Display(Seat *parent); + ~Display(); + + QString displayId() const; +diff --git a/src/daemon/Seat.cpp b/src/daemon/Seat.cpp +index 838c2221d..a2f3d0c39 100644 +--- a/src/daemon/Seat.cpp ++++ b/src/daemon/Seat.cpp +@@ -33,18 +33,6 @@ + #include <functional> + + namespace SDDM { +- int findUnused(int minimum, std::function<bool(const int)> used) { +- // initialize with minimum +- int number = minimum; +- +- // find unused +- while (used(number)) +- number++; +- +- // return number; +- return number; +- } +- + Seat::Seat(const QString &name, QObject *parent) : QObject(parent), m_name(name) { + createDisplay(); + } +@@ -53,30 +41,13 @@ namespace SDDM { + return m_name; + } + +- void Seat::createDisplay(int terminalId) { ++ void Seat::createDisplay() { + //reload config if needed + mainConfig.load(); + +- if (m_name == QLatin1String("seat0")) { +- if (terminalId == -1) { +- // find unused terminal +- terminalId = findUnused(mainConfig.X11.MinimumVT.get(), [&](const int number) { +- return m_terminalIds.contains(number); +- }); +- } +- +- // mark terminal as used +- m_terminalIds << terminalId; +- +- // log message +- qDebug() << "Adding new display" << "on vt" << terminalId << "..."; +- } +- else { +- qDebug() << "Adding new VT-less display..."; +- } +- + // create a new display +- Display *display = new Display(terminalId, this); ++ qDebug() << "Adding new display..."; ++ Display *display = new Display(this); + + // restart display on stop + connect(display, &Display::stopped, this, &Seat::displayStopped); +@@ -112,9 +83,6 @@ namespace SDDM { + // remove display from list + m_displays.removeAll(display); + +- // mark display and terminal ids as unused +- m_terminalIds.removeAll(display->terminalId()); +- + // stop the display + display->blockSignals(true); + display->stop(); +diff --git a/src/daemon/Seat.h b/src/daemon/Seat.h +index f9fe7331f..685eaedd2 100644 +--- a/src/daemon/Seat.h ++++ b/src/daemon/Seat.h +@@ -35,7 +35,7 @@ namespace SDDM { + const QString &name() const; + + public slots: +- void createDisplay(int terminalId = -1); ++ void createDisplay(); + void removeDisplay(SDDM::Display* display); + + private slots: +@@ -47,7 +47,6 @@ namespace SDDM { + QString m_name; + + QVector<Display *> m_displays; +- QVector<int> m_terminalIds; + }; + } + |