[systemd-devel] [PATCH] logind: redefine idleness to start at last activity

Zbigniew Jędrzejewski-Szmek zbyszek at in.waw.pl
Sun Jul 22 15:17:15 PDT 2012


Hi,

after reading the code, the following seems like a reasonable change
of semantics. Please have a look.

----8<-----

Before, after the timeout, a session would be timestamped as idle
since 'last activity + idle timeout'. Now, it is timestamped as idle
since 'last activity'.

Before, after all sessions were idle, the seat would be marked with as
idle with the timestamp of the oldest idle session. Now it is
marked with the timestamp of the youngest idle session.

Iow., the timeout to idle is not modified, only the timestamp that is
reported. Both changes seem to me to be closer to natural understanding of
when idleness started: at last activity. Of course we only can tell after
waiting through the suitable timeout.

---

 src/login/logind-seat.c    | 2 +-
 src/login/logind-session.c | 6 ++----
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c
index 0457121..11e41b5 100644
--- a/src/login/logind-seat.c
+++ b/src/login/logind-seat.c
@@ -460,7 +460,7 @@ int seat_get_idle_hint(Seat *s, dual_timestamp *t) {
 
                 if (!ih) {
                         if (!idle_hint) {
-                                if (k.monotonic < ts.monotonic)
+                                if (k.monotonic > ts.monotonic)
                                         ts = k;
                         } else {
                                 idle_hint = false;
diff --git a/src/login/logind-session.c b/src/login/logind-session.c
index 819596d..6d40450 100644
--- a/src/login/logind-session.c
+++ b/src/login/logind-session.c
@@ -731,7 +731,6 @@ int session_get_idle_hint(Session *s, dual_timestamp *t) {
         char *p;
         struct stat st;
         usec_t u, n;
-        bool b;
         int k;
 
         assert(s);
@@ -766,12 +765,11 @@ int session_get_idle_hint(Session *s, dual_timestamp *t) {
 
         u = timespec_load(&st.st_atim);
         n = now(CLOCK_REALTIME);
-        b = u + IDLE_THRESHOLD_USEC < n;
 
         if (t)
-                dual_timestamp_from_realtime(t, u + b*IDLE_THRESHOLD_USEC);
+                dual_timestamp_from_realtime(t, u);
 
-        return b;
+        return u + IDLE_THRESHOLD_USEC < n;
 
 dont_know:
         if (t)
-- 
1.7.11.1.282.g511ba53

----8<-----


More information about the systemd-devel mailing list