Change session and client activity and creation time members to have more

meaningful names.

Also, remove the code to try and update the session activity time for the
command client when a command message is received as is pointless because it
des not have a session.
pull/1/head
Nicholas Marriott 2009-11-03 20:29:47 +00:00
parent c95f1d1ff9
commit 5289da29ba
7 changed files with 37 additions and 32 deletions

View File

@ -61,7 +61,7 @@ cmd_list_sessions_exec(unused struct cmd *self, struct cmd_ctx *ctx)
xsnprintf(tmp, sizeof tmp, " (group %u)", idx);
}
t = s->tv.tv_sec;
t = s->creation_time.tv_sec;
tim = ctime(&t);
*strchr(tim, '\n') = '\0';

View File

@ -105,7 +105,7 @@ cmd_server_info_exec(unused struct cmd *self, struct cmd_ctx *ctx)
if (s == NULL)
continue;
t = s->tv.tv_sec;
t = s->creation_time.tv_sec;
tim = ctime(&t);
*strchr(tim, '\n') = '\0';

8
cmd.c
View File

@ -362,9 +362,9 @@ cmd_newest_session(struct sessions *ss)
if ((s = ARRAY_ITEM(ss, i)) == NULL)
continue;
if (tv == NULL || timercmp(&s->tv, tv, >)) {
if (tv == NULL || timercmp(&s->creation_time, tv, >)) {
snewest = s;
tv = &s->tv;
tv = &s->creation_time;
}
}
@ -386,9 +386,9 @@ cmd_newest_client(void)
if (c->session == NULL)
continue;
if (tv == NULL || timercmp(&c->tv, tv, >)) {
if (tv == NULL || timercmp(&c->creation_time, tv, >)) {
cnewest = c;
tv = &c->tv;
tv = &c->creation_time;
}
}

View File

@ -61,7 +61,7 @@ server_client_create(int fd)
c->references = 0;
imsg_init(&c->ibuf, fd);
if (gettimeofday(&c->tv, NULL) != 0)
if (gettimeofday(&c->creation_time, NULL) != 0)
fatal("gettimeofday failed");
ARRAY_INIT(&c->prompt_hdata);
@ -261,18 +261,19 @@ server_client_handle_data(struct client *c)
struct window_pane *wp;
struct screen *s;
struct options *oo;
struct timeval tv;
struct timeval tv_add, tv_now;
struct key_binding *bd;
struct keylist *keylist;
struct mouse_event mouse;
int key, status, xtimeout, mode, isprefix;
u_int i;
/* Check and update repeat flag. */
if (gettimeofday(&tv_now, NULL) != 0)
fatal("gettimeofday failed");
xtimeout = options_get_number(&c->session->options, "repeat-time");
if (xtimeout != 0 && c->flags & CLIENT_REPEAT) {
if (gettimeofday(&tv, NULL) != 0)
fatal("gettimeofday failed");
if (timercmp(&tv, &c->repeat_timer, >))
if (timercmp(&tv_now, &c->repeat_timer, >))
c->flags &= ~(CLIENT_PREFIX|CLIENT_REPEAT);
}
@ -281,12 +282,14 @@ server_client_handle_data(struct client *c)
while (tty_keys_next(&c->tty, &key, &mouse) == 0) {
if (c->session == NULL)
return;
c->session->activity = time(NULL);
w = c->session->curw->window;
wp = w->active; /* could die */
oo = &c->session->options;
/* Update activity timer. */
memcpy(&c->session->activity_time,
&tv_now, sizeof c->session->activity_time);
/* Special case: number keys jump to pane in identify mode. */
if (c->flags & CLIENT_IDENTIFY && key >= '0' && key <= '9') {
wp = window_pane_at_index(w, key - '0');
@ -364,11 +367,9 @@ server_client_handle_data(struct client *c)
if (xtimeout != 0 && bd->can_repeat) {
c->flags |= CLIENT_PREFIX|CLIENT_REPEAT;
tv.tv_sec = xtimeout / 1000;
tv.tv_usec = (xtimeout % 1000) * 1000L;
if (gettimeofday(&c->repeat_timer, NULL) != 0)
fatal("gettimeofday failed");
timeradd(&c->repeat_timer, &tv, &c->repeat_timer);
tv_add.tv_sec = xtimeout / 1000;
tv_add.tv_usec = (xtimeout % 1000) * 1000L;
timeradd(&tv_now, &tv_add, &c->repeat_timer);
}
/* Dispatch the command. */
@ -581,11 +582,14 @@ server_client_msg_dispatch(struct client *c)
if (!(c->flags & CLIENT_SUSPENDED))
break;
c->flags &= ~CLIENT_SUSPENDED;
if (c->session != NULL &&
gettimeofday(&c->session->activity_time, NULL) != 0)
fatal("gettimeofday failed");
tty_start_tty(&c->tty);
server_redraw_client(c);
recalculate_sizes();
if (c->session != NULL)
c->session->activity = time(NULL);
break;
case MSG_ENVIRON:
if (datalen != sizeof environdata)
@ -665,9 +669,6 @@ server_client_msg_command(struct client *c, struct msg_command_data *data)
int argc;
char **argv, *cause;
if (c->session != NULL)
c->session->activity = time(NULL);
ctx.error = server_client_msg_error;
ctx.print = server_client_msg_print;
ctx.info = server_client_msg_info;

View File

@ -565,12 +565,13 @@ server_lock_server(void)
continue;
if (s->flags & SESSION_UNATTACHED) {
s->activity = time(NULL);
if (gettimeofday(&s->activity_time, NULL) != 0)
fatal("gettimeofday failed");
continue;
}
timeout = options_get_number(&s->options, "lock-after-time");
if (timeout <= 0 || t <= s->activity + timeout)
if (timeout <= 0 || t <= s->activity_time.tv_sec + timeout)
return; /* not timed out */
}
@ -593,12 +594,13 @@ server_lock_sessions(void)
continue;
if (s->flags & SESSION_UNATTACHED) {
s->activity = time(NULL);
if (gettimeofday(&s->activity_time, NULL) != 0)
fatal("gettimeofday failed");
continue;
}
timeout = options_get_number(&s->options, "lock-after-time");
if (timeout > 0 && t > s->activity + timeout) {
if (timeout > 0 && t > s->activity_time.tv_sec + timeout) {
server_lock_session(s);
recalculate_sizes();
}

View File

@ -126,10 +126,10 @@ session_create(const char *name, const char *cmd, const char *cwd,
s = xmalloc(sizeof *s);
s->references = 0;
s->flags = 0;
s->activity = time(NULL);
if (gettimeofday(&s->tv, NULL) != 0)
if (gettimeofday(&s->creation_time, NULL) != 0)
fatal("gettimeofday failed");
memcpy(&s->activity_time, &s->creation_time, sizeof s->activity_time);
s->curw = NULL;
TAILQ_INIT(&s->lastw);

8
tmux.h
View File

@ -922,8 +922,9 @@ TAILQ_HEAD(session_groups, session_group);
struct session {
char *name;
struct timeval tv;
time_t activity;
struct timeval creation_time;
struct timeval activity_time;
u_int sx;
u_int sy;
@ -1061,7 +1062,8 @@ struct mouse_event {
/* Client connection. */
struct client {
struct imsgbuf ibuf;
struct timeval tv;
struct timeval creation_time;
struct environ environ;