on xenial help sign in
Only try to connect to the dbus DisplayManager if we have a defined XDG_SESSION_PATH
11fb893Michael Terry
plugins/SessionManager/SessionManager.cpp+7−5
@@ -31,17 +31,19 @@ SessionManager::SessionManager(QObject* parent)
31 "/org/freedesktop/login1",
31 "/org/freedesktop/login1",
32 "org.freedesktop.login1.Manager",
32 "org.freedesktop.login1.Manager",
33 QDBusConnection::SM_BUSNAME(), this);
33 QDBusConnection::SM_BUSNAME(), this);
34− if (l1_manager->isValid()) {
34+ if (l1_manager->isValid() && QString(qgetenv("XDG_SESSION_ID")) != "") {
35 QDBusPendingCall pcall = l1_manager->asyncCall("GetSession", QString(qgetenv("XDG_SESSION_ID")));
35 QDBusPendingCall pcall = l1_manager->asyncCall("GetSession", QString(qgetenv("XDG_SESSION_ID")));
36 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pcall, this);
36 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pcall, this);
37 QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)),
37 QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)),
38 this, SLOT(getSessionSlot(QDBusPendingCallWatcher*)));
38 this, SLOT(getSessionSlot(QDBusPendingCallWatcher*)));
39 }
39 }
40
40
41+ if (QString(qgetenv("XDG_SESSION_PATH")) != "") {
41− ldm_session = new QDBusInterface("org.freedesktop.DisplayManager",
42+ ldm_session = new QDBusInterface("org.freedesktop.DisplayManager",
42− QString(qgetenv("XDG_SESSION_PATH")),
43+ QString(qgetenv("XDG_SESSION_PATH")),
43− "org.freedesktop.DisplayManager.Session",
44+ "org.freedesktop.DisplayManager.Session",
44− QDBusConnection::SM_BUSNAME(), this);
45+ QDBusConnection::SM_BUSNAME(), this);
46+ }
45}
47}
46
48
47bool SessionManager::active() const
49bool SessionManager::active() const