diff --git a/js/Makefile.am b/js/Makefile.am index cf2353c81..97d95a9e8 100644 --- a/js/Makefile.am +++ b/js/Makefile.am @@ -32,7 +32,6 @@ nobase_dist_js_DATA = \ misc/jsParse.js \ misc/modemManager.js \ misc/params.js \ - misc/screenSaver.js \ misc/util.js \ perf/core.js \ ui/altTab.js \ diff --git a/js/misc/screenSaver.js b/js/misc/screenSaver.js deleted file mode 100644 index 87687e195..000000000 --- a/js/misc/screenSaver.js +++ /dev/null @@ -1,48 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const Gio = imports.gi.Gio; -const Lang = imports.lang; - -const ScreenSaverIface = - - - - - - - - - - -; - -const ScreenSaverInfo = Gio.DBusInterfaceInfo.new_for_xml(ScreenSaverIface); - -function ScreenSaverProxy() { - var self = new Gio.DBusProxy({ g_connection: Gio.DBus.session, - g_interface_name: ScreenSaverInfo.name, - g_interface_info: ScreenSaverInfo, - g_name: 'org.gnome.ScreenSaver', - g_object_path: '/org/gnome/ScreenSaver', - g_flags: (Gio.DBusProxyFlags.DO_NOT_AUTO_START | - Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) }); - self.init(null); - self.screenSaverActive = false; - - self.connectSignal('ActiveChanged', function(proxy, senderName, [isActive]) { - self.screenSaverActive = isActive; - }); - self.connect('notify::g-name-owner', function() { - if (self.g_name_owner) { - self.GetActiveRemote(function(result, excp) { - if (result) { - let [isActive] = result; - self.screenSaverActive = isActive; - } - }); - } else - self.screenSaverActive = false; - }); - - return self; -} diff --git a/js/ui/automountManager.js b/js/ui/automountManager.js index 9a6f7f673..69a94cb82 100644 --- a/js/ui/automountManager.js +++ b/js/ui/automountManager.js @@ -9,7 +9,6 @@ const Params = imports.misc.params; const Shell = imports.gi.Shell; const Main = imports.ui.main; const ShellMountOperation = imports.ui.shellMountOperation; -const ScreenSaver = imports.misc.screenSaver; const GnomeSession = imports.misc.gnomeSession; const GNOME_SESSION_AUTOMOUNT_INHIBIT = 16; @@ -92,9 +91,7 @@ const AutomountManager = new Lang.Class({ if (!haveSystemd()) this.ckListener = new ConsoleKitManager(); - this._ssProxy = new ScreenSaver.ScreenSaverProxy(); - this._ssProxy.connectSignal('ActiveChanged', - Lang.bind(this, this._screenSaverActiveChanged)); + Main.screenShield.connect('lock-status-changed', Lang.bind(this, this._lockStatusChanged)); this._volumeMonitor = Gio.VolumeMonitor.get(); @@ -127,8 +124,8 @@ const AutomountManager = new Lang.Class({ })); }, - _screenSaverActiveChanged: function(object, senderName, [isActive]) { - if (!isActive) { + _lockStatusChanged: function(shield, locked) { + if (!locked) { this._volumeQueue.forEach(Lang.bind(this, function(volume) { this._checkAndMountVolume(volume); })); @@ -166,7 +163,7 @@ const AutomountManager = new Lang.Class({ if (!this.isSessionActive()) return; - if (this._ssProxy.screenSaverActive) + if (Main.screenShield.locked) return; global.play_theme_sound(0, 'device-added-media'); @@ -178,7 +175,7 @@ const AutomountManager = new Lang.Class({ if (!this.isSessionActive()) return; - if (this._ssProxy.screenSaverActive) + if (Main.screenShield.locked) return; global.play_theme_sound(0, 'device-removed-media'); @@ -230,7 +227,7 @@ const AutomountManager = new Lang.Class({ if (!this.isSessionActive()) return; - if (this._ssProxy.screenSaverActive) { + if (Main.screenShield.locked) { if (this._volumeQueue.indexOf(volume) == -1) this._volumeQueue.push(volume); diff --git a/js/ui/layout.js b/js/ui/layout.js index acf6e1f9f..a4da201a3 100644 --- a/js/ui/layout.js +++ b/js/ui/layout.js @@ -11,7 +11,6 @@ const St = imports.gi.St; const DND = imports.ui.dnd; const Main = imports.ui.main; const Params = imports.misc.params; -const ScreenSaver = imports.misc.screenSaver; const Tweener = imports.ui.tweener; const HOT_CORNER_ACTIVATION_TIMEOUT = 0.5; @@ -565,6 +564,7 @@ const Chrome = new Lang.Class({ this._monitors = []; this._inOverview = false; + this._isLocked = false; this._updateRegionIdle = 0; this._freezeUpdateCount = 0; @@ -579,16 +579,6 @@ const Chrome = new Lang.Class({ global.screen.connect('notify::n-workspaces', Lang.bind(this, this._queueUpdateRegions)); - this._screenSaverActive = false; - this._screenSaverProxy = new ScreenSaver.ScreenSaverProxy(); - this._screenSaverProxy.connectSignal('ActiveChanged', Lang.bind(this, function(proxy, senderName, [isActive]) { - this._onScreenSaverActiveChanged(isActive); - })); - this._screenSaverProxy.GetActiveRemote(Lang.bind(this, function(result, err) { - if (!err) - this._onScreenSaverActiveChanged(result[0]); - })); - this._relayout(); }, @@ -597,6 +587,8 @@ const Chrome = new Lang.Class({ Lang.bind(this, this._overviewShowing)); Main.overview.connect('hidden', Lang.bind(this, this._overviewHidden)); + Main.screenShield.connect('lock-status-changed', + Lang.bind(this, this._lockStatusChanged)); }, addActor: function(actor, params) { @@ -690,16 +682,13 @@ const Chrome = new Lang.Class({ _updateVisibility: function() { for (let i = 0; i < this._trackedActors.length; i++) { + let actorData = this._trackedActors[i], visible; if (!actorData.trackFullscreen) continue; - - let actorData = this._trackedActors[i], visible; if (!actorData.isToplevel) continue; - if (this._screenSaverActive) - visible = false; - else if (this._inOverview) + if (this._inOverview || this._isLocked) visible = true; else if (this.findMonitorForActor(actorData.actor).inFullscreen) visible = false; @@ -721,6 +710,12 @@ const Chrome = new Lang.Class({ this._queueUpdateRegions(); }, + _lockStatusChanged: function(shield, locked) { + this._isLocked = locked; + this._updateVisibility(); + this._queueUpdateRegions(); + }, + _relayout: function() { this._monitors = this._layoutManager.monitors; this._primaryMonitor = this._layoutManager.primaryMonitor; @@ -730,12 +725,6 @@ const Chrome = new Lang.Class({ this._queueUpdateRegions(); }, - _onScreenSaverActiveChanged: function(screenSaverActive) { - this._screenSaverActive = screenSaverActive; - this._updateVisibility(); - this._queueUpdateRegions(); - }, - _findMonitorForRect: function(x, y, w, h) { // First look at what monitor the center of the rectangle is at let cx = x + w/2; diff --git a/js/ui/userMenu.js b/js/ui/userMenu.js index eea414649..ed6f9f79f 100644 --- a/js/ui/userMenu.js +++ b/js/ui/userMenu.js @@ -16,7 +16,6 @@ const GnomeSession = imports.misc.gnomeSession; const Main = imports.ui.main; const PanelMenu = imports.ui.panelMenu; const PopupMenu = imports.ui.popupMenu; -const ScreenSaver = imports.misc.screenSaver; const Util = imports.misc.util; const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown'; @@ -451,7 +450,6 @@ const UserMenuButton = new Lang.Class({ this._accountMgr = Tp.AccountManager.dup(); this._upClient = new UPowerGlib.Client(); - this._screenSaverProxy = new ScreenSaver.ScreenSaverProxy(); this.actor.connect('destroy', Lang.bind(this, this._onDestroy)); this._iconBox = new St.Bin(); @@ -769,16 +767,13 @@ const UserMenuButton = new Lang.Class({ _onLockScreenActivate: function() { Main.overview.hide(); - this._screenSaverProxy.LockRemote(); + Main.screenShield.lock(); }, _onLoginScreenActivate: function() { Main.overview.hide(); - // Ensure we only move to GDM after the screensaver has activated; in some - // OS configurations, the X server may block event processing on VT switch - this._screenSaverProxy.SetActiveRemote(true, Lang.bind(this, function() { - this._userManager.goto_login_session(); - })); + Main.screenShield.lock(); + this._userManager.goto_login_session(); }, _onQuitSessionActivate: function() { @@ -800,10 +795,8 @@ const UserMenuButton = new Lang.Class({ this._suspendOrPowerOffItem.state == PopupMenu.PopupAlternatingMenuItemState.DEFAULT) { this._session.ShutdownRemote(); } else { - // Ensure we only suspend after locking the screen - this._screenSaverProxy.LockRemote(Lang.bind(this, function() { - this._upClient.suspend_sync(null); - })); + Main.screenShield.lock(); + this._upClient.suspend_sync(null); } } });