ScreenShield: listen to login managers to unlock the session
Handle locking and unlocking from outside. This fixes coming back from fast user switching. https://bugzilla.gnome.org/show_bug.cgi?id=682096
This commit is contained in:
parent
8dc9ceb2bc
commit
b6375d3e40
@ -8,11 +8,13 @@ const Meta = imports.gi.Meta;
|
|||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
|
||||||
|
const ConsoleKit = imports.misc.consoleKit;
|
||||||
const GnomeSession = imports.misc.gnomeSession;
|
const GnomeSession = imports.misc.gnomeSession;
|
||||||
const Layout = imports.ui.layout;
|
const Layout = imports.ui.layout;
|
||||||
const Lightbox = imports.ui.lightbox;
|
const Lightbox = imports.ui.lightbox;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const MessageTray = imports.ui.messageTray;
|
const MessageTray = imports.ui.messageTray;
|
||||||
|
const Systemd = imports.misc.systemd;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
|
|
||||||
const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver';
|
const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver';
|
||||||
@ -340,6 +342,16 @@ const ScreenShield = new Lang.Class({
|
|||||||
this._onStatusChanged(status);
|
this._onStatusChanged(status);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
if (Systemd.haveSystemd()) {
|
||||||
|
this._systemdProxy = new Systemd.SystemdLoginSession(GLib.getenv('XDG_SESSION_ID'));
|
||||||
|
this._systemdProxy.connectSignal('Lock', Lang.bind(this, function() { this.lock(false); }));
|
||||||
|
this._systemdProxy.connectSignal('Unlock', Lang.bind(this, function() { this.unlock(); }));
|
||||||
|
} else {
|
||||||
|
this._consoleKitProxy = new ConsoleKit.ConsoleKitManager();
|
||||||
|
this._consoleKitProxy.ckSession.connectSignal('Lock', Lang.bind(this, function() { this.lock(false); }));
|
||||||
|
this._consoleKitProxy.ckSession.connectSignal('Unlock', Lang.bind(this, function() { this.unlock(); }));
|
||||||
|
}
|
||||||
|
|
||||||
this._settings = new Gio.Settings({ schema: SCREENSAVER_SCHEMA });
|
this._settings = new Gio.Settings({ schema: SCREENSAVER_SCHEMA });
|
||||||
|
|
||||||
this._isModal = false;
|
this._isModal = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user