[ksmserver] Fix session restore check

Summary:
The old code checked ksmserver->defaultSession in the Startup
constructor before ksmserver was set up by main.cpp

This refactor moves it to the job, so we'll be checking if we're
restoring or not after ksmserver has been set up by main.cpp as well as
making the initial code path a bit clearer.

Test Plan:
Logged in with session restore
Logged in with a default session

Reviewers: ahartmetz

Reviewed By: ahartmetz

Subscribers: ahartmetz, plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D16550
wilder-broken-krunner
David Edmundson 7 years ago
parent 50815c0c30
commit e53e3e1701
  1. 14
      ksmserver/startup.cpp

@ -198,12 +198,9 @@ Startup::Startup(KSMServer *parent):
ksmserver->setupShortcuts(); // done only here, because it needs kglobalaccel :-/
});
if (ksmserver->defaultSession()) {
connect(phase1, &KJob::finished, phase2, &KJob::start);
} else {
connect(phase1, &KJob::finished, restoreSession, &KJob::start);
connect(restoreSession, &KJob::finished, phase2, &KJob::start);
}
connect(phase1, &KJob::finished, restoreSession, &KJob::start);
connect(restoreSession, &KJob::finished, phase2, &KJob::start);
connect(phase1, &KJob::finished, this, []() {
NotificationThread *loginSound = new NotificationThread();
connect(loginSound, &NotificationThread::finished, loginSound, &NotificationThread::deleteLater);
@ -291,6 +288,11 @@ RestoreSessionJob::RestoreSessionJob(KSMServer *server): KJob(),
void RestoreSessionJob::start()
{
if (m_ksmserver->defaultSession()) {
QTimer::singleShot(0, this, [this]() {emitResult();});
return;
}
m_ksmserver->lastAppStarted = 0;
m_ksmserver->lastIdStarted.clear();
m_ksmserver->state = KSMServer::Restoring;

Loading…
Cancel
Save