[compat] fix logind DBus on non-linux unixes #2648

Merged
MaranBr merged 2 commits from fbsd-dbus-fix into master 2025-10-02 23:40:00 +02:00

View file

@ -1770,16 +1770,25 @@ void GMainWindow::OnDisplayTitleBars(bool show) {
void GMainWindow::SetupPrepareForSleep() { void GMainWindow::SetupPrepareForSleep() {
#ifdef __unix__ #ifdef __unix__
auto bus = QDBusConnection::systemBus(); if (auto bus = QDBusConnection::systemBus(); bus.isConnected()) {
if (bus.isConnected()) { // See https://github.com/ConsoleKit2/ConsoleKit2/issues/150
#ifdef __linux__
const auto dbus_logind_service = QStringLiteral("org.freedesktop.login1");
const auto dbus_logind_path = QStringLiteral("/org/freedesktop/login1");
const auto dbus_logind_manager_if = QStringLiteral("org.freedesktop.login1.Manager");
//const auto dbus_logind_session_if = QStringLiteral("org.freedesktop.login1.Session");
#else
const auto dbus_logind_service = QStringLiteral("org.freedesktop.ConsoleKit");
const auto dbus_logind_path = QStringLiteral("/org/freedesktop/ConsoleKit/Manager");
const auto dbus_logind_manager_if = QStringLiteral("org.freedesktop.ConsoleKit.Manager");
//const auto dbus_logind_session_if = QStringLiteral("org.freedesktop.ConsoleKit.Session");
#endif
const bool success = bus.connect( const bool success = bus.connect(
QStringLiteral("org.freedesktop.login1"), QStringLiteral("/org/freedesktop/login1"), dbus_logind_service, dbus_logind_path,
QStringLiteral("org.freedesktop.login1.Manager"), QStringLiteral("PrepareForSleep"), dbus_logind_manager_if, QStringLiteral("PrepareForSleep"),
QStringLiteral("b"), this, SLOT(OnPrepareForSleep(bool))); QStringLiteral("b"), this, SLOT(OnPrepareForSleep(bool)));
if (!success)
if (!success) {
LOG_WARNING(Frontend, "Couldn't register PrepareForSleep signal"); LOG_WARNING(Frontend, "Couldn't register PrepareForSleep signal");
}
} else { } else {
LOG_WARNING(Frontend, "QDBusConnection system bus is not connected"); LOG_WARNING(Frontend, "QDBusConnection system bus is not connected");
} }