gdm: honor timed login delay even if animations disabled
gnome-shell currently initiates an automatic login attempt if timed login is enabled and the timed login animation completes. Unfortunately, if animations are disabled (as is the case for virtual machines) then the timed login animation will complete instantly, and timed login will proceed immediately after gnome-shell has noticed the user is idle for 5 seconds. This commit addresses that problem by initiating timed login and the animation from a main loop timeout, instead of using the tweener api.
This commit is contained in:
parent
a347ed9912
commit
9ef1bc7273
@ -126,20 +126,34 @@ var UserListItem = new Lang.Class({
|
|||||||
let hold = new Batch.Hold();
|
let hold = new Batch.Hold();
|
||||||
|
|
||||||
this.hideTimedLoginIndicator();
|
this.hideTimedLoginIndicator();
|
||||||
Tweener.addTween(this._timedLoginIndicator,
|
|
||||||
{ scale_x: 1.,
|
let startTime = GLib.get_monotonic_time();
|
||||||
time: time,
|
|
||||||
transition: 'linear',
|
this._timedLoginTimeoutId = GLib.timeout_add (GLib.PRIORITY_DEFAULT,
|
||||||
onComplete: function() {
|
33,
|
||||||
hold.release();
|
Lang.bind(this, function() {
|
||||||
},
|
let currentTime = GLib.get_monotonic_time();
|
||||||
onCompleteScope: this
|
let elapsedTime = (currentTime - startTime) / GLib.USEC_PER_SEC;
|
||||||
});
|
this._timedLoginIndicator.scale_x = elapsedTime / time;
|
||||||
|
if (elapsedTime >= time) {
|
||||||
|
this._timedLoginTimeoutId = 0;
|
||||||
|
hold.release();
|
||||||
|
return GLib.SOURCE_REMOVE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return GLib.SOURCE_CONTINUE;
|
||||||
|
}));
|
||||||
|
|
||||||
|
GLib.Source.set_name_by_id(this._timedLoginTimeoutId, '[gnome-shell] this._timedLoginTimeoutId');
|
||||||
|
|
||||||
return hold;
|
return hold;
|
||||||
},
|
},
|
||||||
|
|
||||||
hideTimedLoginIndicator: function() {
|
hideTimedLoginIndicator: function() {
|
||||||
Tweener.removeTweens(this._timedLoginIndicator);
|
if (this._timedLoginTimeoutId) {
|
||||||
|
GLib.source_remove(this._timedLoginTimeoutId);
|
||||||
|
this._timedLoginTimeoutId = 0;
|
||||||
|
}
|
||||||
this._timedLoginIndicator.scale_x = 0.;
|
this._timedLoginIndicator.scale_x = 0.;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user