loginDialog: Don't call _loginScreenSessionActivated() when not required

We are calling _loginScreenSessionActivated() even in cases where this is
not required. For example, there are cases where the Active property is
already `true` and properties like `IdleHint`, `IdleSinceHint` and
`IdleSinceHintMonotonic` change. In this cases _loginScreenSessionActivated()
is called and will reset the authPrompt when not necessary.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2411>
This commit is contained in:
Alessandro Bono 2022-08-08 13:33:53 +02:00 committed by Marge Bot
parent a70e9c2876
commit 4871eba8bf

View File

@ -985,8 +985,9 @@ var LoginDialog = GObject.registerClass({
async _getGreeterSessionProxy() {
const loginManager = LoginManager.getLoginManager();
this._greeterSessionProxy = await loginManager.getCurrentSessionProxy();
this._greeterSessionProxy?.connectObject('g-properties-changed', () => {
if (this._greeterSessionProxy.Active)
this._greeterSessionProxy?.connectObject('g-properties-changed', (proxy, properties) => {
const activeChanged = !!properties.lookup_value('Active', null);
if (activeChanged && proxy.Active)
this._loginScreenSessionActivated();
}, this);
}