summaryrefslogtreecommitdiffstats
path: root/session.c
diff options
context:
space:
mode:
authornicm <nicm>2015-08-28 13:01:03 +0000
committernicm <nicm>2015-08-28 13:01:03 +0000
commit57cc4d45d52e0af562172ac4044f311e1bb00c64 (patch)
tree6ea3979025bad294cae40808bc5e712b82d482a8 /session.c
parent675def039652e69d8fd5f229eff2128116e1d328 (diff)
Make session_update_activity more useful and use it in more places.
Diffstat (limited to 'session.c')
-rw-r--r--session.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/session.c b/session.c
index 5061083a..7572ac21 100644
--- a/session.c
+++ b/session.c
@@ -112,10 +112,6 @@ session_create(const char *name, int argc, char **argv, const char *path,
s->references = 1;
s->flags = 0;
- if (gettimeofday(&s->creation_time, NULL) != 0)
- fatal("gettimeofday failed");
- session_update_activity(s);
-
s->cwd = dup(cwd);
s->curw = NULL;
@@ -133,6 +129,10 @@ session_create(const char *name, int argc, char **argv, const char *path,
memcpy(s->tio, tio, sizeof *s->tio);
}
+ if (gettimeofday(&s->creation_time, NULL) != 0)
+ fatal("gettimeofday failed");
+ session_update_activity(s, &s->creation_time);
+
s->sx = sx;
s->sy = sy;
@@ -224,12 +224,17 @@ session_check_name(const char *name)
return (*name != '\0' && name[strcspn(name, ":.")] == '\0');
}
-/* Update session active time. */
+/* Update activity time. */
void
-session_update_activity(struct session *s)
+session_update_activity(struct session *s, struct timeval *from)
{
- if (gettimeofday(&s->activity_time, NULL) != 0)
- fatal("gettimeofday");
+ struct timeval *last = &s->last_activity_time;
+
+ memcpy(last, &s->activity_time, sizeof *last);
+ if (from == NULL)
+ gettimeofday(&s->activity_time, NULL);
+ else
+ memcpy(&s->activity_time, from, sizeof s->activity_time);
}
/* Find the next usable session. */