loginDialog: disconnect greeter when switching away VTs

At the moment the greeter stays connected to GDM even after the
user logs in.  That stale connection can lead to bookkeeping
confusion later on.

This commit makes sure we disconnect the greeter connection any
time the user logs in or otherwise switches VTs.

This commit also make sure we do a full reset when VT switching
back later, so the greeter connection can get re-setup.
This commit is contained in:
Ray Strode 2019-02-06 15:59:31 -05:00
parent 98a437c38d
commit 3454a39590

View File

@ -917,9 +917,6 @@ var LoginDialog = GObject.registerClass({
} }
_loginScreenSessionActivated() { _loginScreenSessionActivated() {
if (this.opacity == 255 && this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
return;
Tweener.addTween(this, Tweener.addTween(this,
{ opacity: 255, { opacity: 255,
time: _FADE_ANIMATION_TIME, time: _FADE_ANIMATION_TIME,
@ -934,12 +931,18 @@ var LoginDialog = GObject.registerClass({
}, },
onUpdateScope: this, onUpdateScope: this,
onComplete() { onComplete() {
if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.NOT_VERIFYING) this._authPrompt.reset();
this._authPrompt.reset();
}, },
onCompleteScope: this }); onCompleteScope: this });
} }
_loginScreenSessionDeactivated() {
if (this._greeter) {
this._greeter.run_dispose();
this._greeter = null;
}
}
_gotGreeterSessionProxy(proxy) { _gotGreeterSessionProxy(proxy) {
this._greeterSessionProxy = proxy; this._greeterSessionProxy = proxy;
this._greeterSessionProxyChangedId = this._greeterSessionProxyChangedId =
@ -949,6 +952,8 @@ var LoginDialog = GObject.registerClass({
if (proxy.Active) if (proxy.Active)
this._loginScreenSessionActivated(); this._loginScreenSessionActivated();
else
this._loginScreenSessionDeactivated();
}); });
} }