logind: redefine idleness to start at last activity

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.

Both changes seem to me to be closer to natural understanding of
idleness: the time since last activity counts.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2012-07-22 15:39:37 +02:00
parent 49cb1ecf2d
commit 4a271908f1
2 changed files with 3 additions and 5 deletions

View File

@ -471,7 +471,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;

View File

@ -738,7 +738,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);
@ -773,12 +772,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)