@@ -29,12 +29,18 @@ public:
29 bool authenticated = false;
29 bool authenticated = false;
30 QString authenticationUser;
30 QString authenticationUser;
31 bool twoFactorDone = false;
31 bool twoFactorDone = false;
32+ QTimer authCallbackTimer;
34Greeter::Greeter(QObject *parent)
35Greeter::Greeter(QObject *parent)
35 : QObject(parent)
36 : QObject(parent)
36 , d_ptr(new GreeterPrivate)
37 , d_ptr(new GreeterPrivate)
41+ d->authCallbackTimer.setSingleShot(true);
42+ connect(&d->authCallbackTimer, &QTimer::timeout,
43+ this, &QLightDM::Greeter::handleAuthenticate);
40Greeter::~Greeter()
46Greeter::~Greeter()
@@ -134,7 +140,7 @@ void Greeter::authenticate(const QString &username)
134 d->authenticated = false;
140 d->authenticated = false;
135 d->authenticationUser = username;
141 d->authenticationUser = username;
136 d->twoFactorDone = false;
142 d->twoFactorDone = false;
137− QTimer::singleShot(0, this, &Greeter::handleAuthenticate);
143+ d->authCallbackTimer.start();
140void Greeter::handleAuthenticate()
146void Greeter::handleAuthenticate()
@@ -190,7 +196,7 @@ void Greeter::authenticateAsGuest()
190 d->authenticated = true;
196 d->authenticated = true;
191 d->authenticationUser = QString(); // this is what the real liblightdm does
197 d->authenticationUser = QString(); // this is what the real liblightdm does
192 d->twoFactorDone = false;
198 d->twoFactorDone = false;
193− QTimer::singleShot(0, this, &Greeter::authenticationComplete);
199+ d->authCallbackTimer.start();
196void Greeter::authenticateAutologin()
202void Greeter::authenticateAutologin()
@@ -203,7 +209,10 @@ void Greeter::authenticateRemote(const QString &session, const QString &username
205void Greeter::cancelAuthentication()
211void Greeter::cancelAuthentication()
214+ d->authCallbackTimer.stop();
208void Greeter::setLanguage (const QString &language)
217void Greeter::setLanguage (const QString &language)