screenShield: Drop fallback implementation
With fallback mode gone, we can no longer rely on gnome-screensaver being installed. Rather than handling three different cases (GDM, gnome-screensaver, no lock), disable the lock functionality when not running under GDM. https://bugzilla.gnome.org/show_bug.cgi?id=693403
This commit is contained in:
parent
9a83662a18
commit
3b1e536822
@ -82,7 +82,7 @@ function _sessionUpdated() {
|
|||||||
Shell.KeyBindingMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.KeyBindingMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
sessionMode.hasRunDialog ? openRunDialog : null);
|
sessionMode.hasRunDialog ? openRunDialog : null);
|
||||||
if (sessionMode.isGreeter)
|
if (sessionMode.isGreeter && screenShield)
|
||||||
screenShield.showDialog();
|
screenShield.showDialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,8 +142,6 @@ function startSession() {
|
|||||||
magnifier = new Magnifier.Magnifier();
|
magnifier = new Magnifier.Magnifier();
|
||||||
if (LoginManager.canLock())
|
if (LoginManager.canLock())
|
||||||
screenShield = new ScreenShield.ScreenShield();
|
screenShield = new ScreenShield.ScreenShield();
|
||||||
else
|
|
||||||
screenShield = new ScreenShield.ScreenShieldFallback();
|
|
||||||
|
|
||||||
panel = new Panel.Panel();
|
panel = new Panel.Panel();
|
||||||
messageTray = new MessageTray.MessageTray();
|
messageTray = new MessageTray.MessageTray();
|
||||||
|
@ -1178,62 +1178,3 @@ const ScreenShield = new Lang.Class({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
Signals.addSignalMethods(ScreenShield.prototype);
|
Signals.addSignalMethods(ScreenShield.prototype);
|
||||||
|
|
||||||
/* Fallback code to handle session locking using gnome-screensaver,
|
|
||||||
in case the required GDM dependency is not there
|
|
||||||
*/
|
|
||||||
const ScreenShieldFallback = new Lang.Class({
|
|
||||||
Name: 'ScreenShieldFallback',
|
|
||||||
|
|
||||||
_init: function() {
|
|
||||||
Util.spawn(['gnome-screensaver']);
|
|
||||||
|
|
||||||
this._proxy = new Gio.DBusProxy({ g_connection: Gio.DBus.session,
|
|
||||||
g_name: 'org.gnome.ScreenSaver',
|
|
||||||
g_object_path: '/org/gnome/ScreenSaver',
|
|
||||||
g_interface_name: 'org.gnome.ScreenSaver',
|
|
||||||
g_flags: (Gio.DBusProxyFlags.DO_NOT_AUTO_START |
|
|
||||||
Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES),
|
|
||||||
});
|
|
||||||
this._proxy.init(null);
|
|
||||||
|
|
||||||
this._proxy.connect('g-signal', Lang.bind(this, this._onSignal));
|
|
||||||
this._proxy.connect('notify::g-name-owner', Lang.bind(this, this._onNameOwnerChanged));
|
|
||||||
},
|
|
||||||
|
|
||||||
_onNameOwnerChanged: function(object, pspec) {
|
|
||||||
if (this._proxy.g_name_owner)
|
|
||||||
[this._locked] = this._proxy.call_sync('GetActive', null,
|
|
||||||
Gio.DBusCallFlags.NONE, -1, null).deep_unpack();
|
|
||||||
else
|
|
||||||
this._locked = false;
|
|
||||||
|
|
||||||
this.emit('active-changed', this._locked);
|
|
||||||
},
|
|
||||||
|
|
||||||
_onSignal: function(proxy, senderName, signalName, params) {
|
|
||||||
if (signalName == 'ActiveChanged') {
|
|
||||||
[this._locked] = params.deep_unpack();
|
|
||||||
this.emit('active-changed', this._locked);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
get locked() {
|
|
||||||
return this._locked;
|
|
||||||
},
|
|
||||||
|
|
||||||
lock: function() {
|
|
||||||
this._proxy.call('Lock', null, Gio.DBusCallFlags.NONE, -1, null,
|
|
||||||
Lang.bind(this, function(proxy, result) {
|
|
||||||
proxy.call_finish(result);
|
|
||||||
|
|
||||||
this.emit('lock-screen-shown');
|
|
||||||
}));
|
|
||||||
},
|
|
||||||
|
|
||||||
unlock: function() {
|
|
||||||
this._proxy.call('SetActive', GLib.Variant.new('(b)', false),
|
|
||||||
Gio.DBusCallFlags.NONE, -1, null, null);
|
|
||||||
},
|
|
||||||
});
|
|
||||||
Signals.addSignalMethods(ScreenShieldFallback.prototype);
|
|
||||||
|
@ -600,7 +600,8 @@ const UserMenuButton = new Lang.Class({
|
|||||||
Lang.bind(this, this._updateHaveShutdown));
|
Lang.bind(this, this._updateHaveShutdown));
|
||||||
|
|
||||||
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
||||||
Main.screenShield.connect('locked-changed', Lang.bind(this, this._updatePresenceIcon));
|
if (Main.screenShield)
|
||||||
|
Main.screenShield.connect('locked-changed', Lang.bind(this, this._updatePresenceIcon));
|
||||||
this._sessionUpdated();
|
this._sessionUpdated();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -656,7 +657,7 @@ const UserMenuButton = new Lang.Class({
|
|||||||
|
|
||||||
_updateLockScreen: function() {
|
_updateLockScreen: function() {
|
||||||
let allowLockScreen = !this._lockdownSettings.get_boolean(DISABLE_LOCK_SCREEN_KEY);
|
let allowLockScreen = !this._lockdownSettings.get_boolean(DISABLE_LOCK_SCREEN_KEY);
|
||||||
this._lockScreenItem.actor.visible = allowLockScreen;
|
this._lockScreenItem.actor.visible = allowLockScreen && LoginManager.canLock();
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateInstallUpdates: function() {
|
_updateInstallUpdates: function() {
|
||||||
@ -864,7 +865,8 @@ const UserMenuButton = new Lang.Class({
|
|||||||
_onLoginScreenActivate: function() {
|
_onLoginScreenActivate: function() {
|
||||||
this.menu.close(BoxPointer.PopupAnimation.NONE);
|
this.menu.close(BoxPointer.PopupAnimation.NONE);
|
||||||
Main.overview.hide();
|
Main.overview.hide();
|
||||||
Main.screenShield.lock(false);
|
if (Main.screenShield)
|
||||||
|
Main.screenShield.lock(false);
|
||||||
Gdm.goto_login_session_sync(null);
|
Gdm.goto_login_session_sync(null);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user