diff options
Diffstat (limited to 'user/sddm/ck2-support.patch')
-rw-r--r-- | user/sddm/ck2-support.patch | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/user/sddm/ck2-support.patch b/user/sddm/ck2-support.patch new file mode 100644 index 000000000..8a9e6ee85 --- /dev/null +++ b/user/sddm/ck2-support.patch @@ -0,0 +1,90 @@ +diff --git a/src/daemon/LogindDBusTypes.cpp b/src/daemon/LogindDBusTypes.cpp +index 79c7031..4ccfeb5 100644 +--- a/src/daemon/LogindDBusTypes.cpp ++++ b/src/daemon/LogindDBusTypes.cpp +@@ -18,6 +18,7 @@ public: + QString sessionIfaceName; + QString seatIfaceName; + QString userIfaceName; ++ QString newSeatSignalName; + }; + + LogindPathInternal::LogindPathInternal() +@@ -55,18 +56,20 @@ LogindPathInternal::LogindPathInternal() + seatIfaceName = QStringLiteral("org.freedesktop.login1.Seat"); + sessionIfaceName = QStringLiteral("org.freedesktop.login1.Session"); + userIfaceName = QStringLiteral("org.freedesktop.login1.User"); ++ newSeatSignalName = QStringLiteral("SeatNew"); + return; + } + + if (QDBusConnection::systemBus().interface()->isServiceRegistered(QStringLiteral("org.freedesktop.ConsoleKit"))) { +- qDebug() << "Console kit interface found"; ++ qDebug() << "ConsoleKit interface found"; + available = true; + serviceName = QStringLiteral("org.freedesktop.ConsoleKit"); + managerPath = QStringLiteral("/org/freedesktop/ConsoleKit/Manager"); +- managerIfaceName = QStringLiteral("/org.freedesktop.ConsoleKit.Manager"); //note this doesn't match logind ++ managerIfaceName = QStringLiteral("org.freedesktop.ConsoleKit.Manager"); //note this doesn't match logind + seatIfaceName = QStringLiteral("org.freedesktop.ConsoleKit.Seat"); + sessionIfaceName = QStringLiteral("org.freedesktop.ConsoleKit.Session"); + userIfaceName = QStringLiteral("org.freedesktop.ConsoleKit.User"); ++ newSeatSignalName = QStringLiteral("SeatAdded"); + return; + } + qDebug() << "No session manager found"; +@@ -109,3 +112,8 @@ QString Logind::userIfaceName() + { + return s_instance->userIfaceName; + } ++ ++QString Logind::newSeatSignalName() ++{ ++ return s_instance->newSeatSignalName; ++} +diff --git a/src/daemon/LogindDBusTypes.h b/src/daemon/LogindDBusTypes.h +index f1e8dd4..028879a 100644 +--- a/src/daemon/LogindDBusTypes.h ++++ b/src/daemon/LogindDBusTypes.h +@@ -13,6 +13,7 @@ struct Logind + static QString sessionIfaceName(); + static QString seatIfaceName(); + static QString userIfaceName(); ++ static QString newSeatSignalName(); + }; + + +diff --git a/src/daemon/SeatManager.cpp b/src/daemon/SeatManager.cpp +index c5afc57..6281ea8 100644 +--- a/src/daemon/SeatManager.cpp ++++ b/src/daemon/SeatManager.cpp +@@ -26,6 +26,7 @@ + #include <QDBusMessage> + #include <QDBusPendingReply> + #include <QDBusContext> ++#include <QDebug> + + #include "LogindDBusTypes.h" + +@@ -59,6 +60,12 @@ namespace SDDM { + QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply); + connect(watcher, &QDBusPendingCallWatcher::finished, this, [=]() { + watcher->deleteLater(); ++ if (Logind::serviceName().contains(QStringLiteral("ConsoleKit"))) { ++ m_canGraphical = true; ++ emit canGraphicalChanged(m_canGraphical); ++ return; ++ } ++ + if (!reply.isValid()) + return; + +@@ -113,7 +120,7 @@ namespace SDDM { + } + }); + +- QDBusConnection::systemBus().connect(Logind::serviceName(), Logind::managerPath(), Logind::managerIfaceName(), QStringLiteral("SeatNew"), this, SLOT(logindSeatAdded(QString,QDBusObjectPath))); ++ QDBusConnection::systemBus().connect(Logind::serviceName(), Logind::managerPath(), Logind::managerIfaceName(), Logind::newSeatSignalName(), this, SLOT(logindSeatAdded(QString,QDBusObjectPath))); + QDBusConnection::systemBus().connect(Logind::serviceName(), Logind::managerPath(), Logind::managerIfaceName(), QStringLiteral("SeatRemoved"), this, SLOT(logindSeatRemoved(QString,QDBusObjectPath))); + } + |