[gnome-shell] ScreenShield: implement o.g.ScreenSaver.GetActiveTime



commit 2a8a8065a8ca01d6661222a081972384782c83f4
Author: Giovanni Campagna <gcampagna src gnome org>
Date:   Tue Oct 16 16:38:32 2012 +0200

    ScreenShield: implement o.g.ScreenSaver.GetActiveTime
    
    Part of the old gnome-screensaver interface, returns the number of seconds
    that the screensaver has been active for.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=686064

 js/ui/screenShield.js |   15 ++++++++++++++-
 js/ui/shellDBus.js    |   13 ++++++++++++-
 2 files changed, 26 insertions(+), 2 deletions(-)
---
diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
index d5ca644..07e450f 100644
--- a/js/ui/screenShield.js
+++ b/js/ui/screenShield.js
@@ -429,6 +429,7 @@ const ScreenShield = new Lang.Class({
         this._isGreeter = false;
         this._isActive = false;
         this._inUnlockAnimation = false;
+        this._activationTime = 0;
 
         this._lightbox = new Lightbox.Lightbox(Main.uiGroup,
                                                { inhibitEvents: true,
@@ -556,8 +557,12 @@ const ScreenShield = new Lang.Class({
                 this._isModal = true;
             }
 
-            if (!this._isActive)
+            if (!this._isActive) {
                 this._lightbox.show();
+
+                if (this._activationTime == 0)
+                    this._activationTime = GLib.get_monotonic_time();
+            }
         } else {
             let lightboxWasShown = this._lightbox.shown;
             this._lightbox.hide();
@@ -774,6 +779,10 @@ const ScreenShield = new Lang.Class({
         return this._isActive;
     },
 
+    get activationTime() {
+        return this._activationTime;
+    },
+
     _tweenUnlocked: function() {
         this._inUnlockAnimation = true;
         this.unlock();
@@ -818,6 +827,7 @@ const ScreenShield = new Lang.Class({
         if (Main.sessionMode.currentMode == 'unlock-dialog')
             Main.sessionMode.popMode('unlock-dialog');
 
+        this._activationTime = 0;
         this._isActive = false;
         this.emit('lock-status-changed');
     },
@@ -828,6 +838,9 @@ const ScreenShield = new Lang.Class({
             this._isModal = true;
         }
 
+        if (this._activationTime == 0)
+            this._activationTime = GLib.get_monotonic_time();
+
         this.actor.show();
 
         if (Main.sessionMode.currentMode != 'unlock-dialog' &&
diff --git a/js/ui/shellDBus.js b/js/ui/shellDBus.js
index 65465ef..7a625af 100644
--- a/js/ui/shellDBus.js
+++ b/js/ui/shellDBus.js
@@ -59,6 +59,9 @@ const ScreenSaverIface = <interface name="org.gnome.ScreenSaver">
 <method name="SetActive">
     <arg name="value" direction="in" type="b" />
 </method>
+<method name="GetActiveTime">
+    <arg name="value" direction="out" type="u" />
+</method>
 <signal name="ActiveChanged">
     <arg name="new_value" type="b" />
 </signal>
@@ -373,5 +376,13 @@ const ScreenSaverDBus = new Lang.Class({
 
     GetActive: function() {
         return this._screenShield.locked;
-    }
+    },
+
+    GetActiveTime: function() {
+        let started = this._screenShield.activationTime;
+        if (started > 0)
+            return Math.floor((GLib.get_monotonic_time() - started) / 1000000);
+        else
+            return 0;
+    },
 });



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