ScreenShield: emit lock-status-changed at the end of animation for manual locking too
gnome-settings-daemon uses lock-status-changed/ActiveChanged to drive screen blanking, so must wait for the animation end before emitting it. https://bugzilla.gnome.org/show_bug.cgi?id=691964
This commit is contained in:
parent
9a25224890
commit
7ad881d0ec
@ -951,6 +951,12 @@ const ScreenShield = new Lang.Class({
|
|||||||
this._lockScreenGroup.fixed_position_set = false;
|
this._lockScreenGroup.fixed_position_set = false;
|
||||||
this._lockScreenScrollCounter = 0;
|
this._lockScreenScrollCounter = 0;
|
||||||
|
|
||||||
|
let prevIsActive = this._isActive;
|
||||||
|
this._isActive = true;
|
||||||
|
|
||||||
|
if (prevIsActive != this._isActive)
|
||||||
|
this.emit('lock-status-changed');
|
||||||
|
|
||||||
this.emit('lock-screen-shown');
|
this.emit('lock-screen-shown');
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1078,8 +1084,16 @@ const ScreenShield = new Lang.Class({
|
|||||||
|
|
||||||
this._resetLockScreen(animate, animate);
|
this._resetLockScreen(animate, animate);
|
||||||
|
|
||||||
this._isActive = true;
|
// We used to set isActive and emit lock-status-changed here,
|
||||||
this.emit('lock-status-changed');
|
// but now we do that from lockScreenShown, which means
|
||||||
|
// there is a 0.3 seconds window during which the lock
|
||||||
|
// screen is effectively visible and the screen is locked, but
|
||||||
|
// the DBus interface reports the screensaver is off.
|
||||||
|
// This is because when we emit ActiveChanged(true),
|
||||||
|
// gnome-settings-daemon blanks the screen, and we don't want
|
||||||
|
// blank during the animation.
|
||||||
|
// This is not a problem for the idle fade case, because we
|
||||||
|
// activate without animation in that case.
|
||||||
},
|
},
|
||||||
|
|
||||||
lock: function(animate) {
|
lock: function(animate) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user