[gnome-shell/gnome-3-16] ScreenShield: only inhibit suspend if we're the active session



commit 2a3e410d715a427dd182b9b10e094c15d182e10a
Author: Rui Matos <tiagomatos gmail com>
Date:   Wed May 13 21:42:13 2015 +0200

    ScreenShield: only inhibit suspend if we're the active session
    
    If we aren't the active session clutter can't animate and thus we
    can't expect the shield to be shown before releasing the suspend
    inhibitor so we should release it immediately when becoming inactive.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=749228

 js/ui/screenShield.js |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)
---
diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
index e81c782..d8d991c 100644
--- a/js/ui/screenShield.js
+++ b/js/ui/screenShield.js
@@ -511,11 +511,14 @@ const ScreenShield = new Lang.Class({
         this._loginManager.connect('prepare-for-sleep',
                                    Lang.bind(this, this._prepareForSleep));
 
+        this._loginSession = null;
         this._loginManager.getCurrentSessionProxy(Lang.bind(this,
             function(sessionProxy) {
                 this._loginSession = sessionProxy;
                 this._loginSession.connectSignal('Lock', Lang.bind(this, function() { this.lock(false); }));
                 this._loginSession.connectSignal('Unlock', Lang.bind(this, function() { 
this.deactivate(false); }));
+                this._loginSession.connect('g-properties-changed', Lang.bind(this, this._syncInhibitor));
+                this._syncInhibitor();
             }));
 
         this._settings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA });
@@ -675,7 +678,8 @@ const ScreenShield = new Lang.Class({
     },
 
     _syncInhibitor: function() {
-        let inhibit = (!this._isActive && this._settings.get_boolean(LOCK_ENABLED_KEY));
+        let inhibit = (this._loginSession && this._loginSession.Active &&
+                       !this._isActive && this._settings.get_boolean(LOCK_ENABLED_KEY));
         if (inhibit) {
             this._loginManager.inhibit(_("GNOME needs to lock the screen"),
                                        Lang.bind(this, function(inhibitor) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]