summaryrefslogtreecommitdiffstats
path: root/usr.bin/tmux/server-client.c
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2009-11-03 20:29:47 +0000
committernicm <nicm@openbsd.org>2009-11-03 20:29:47 +0000
commita18122f87d1be1bb6c3e4edde905492843e55c90 (patch)
tree5db7be6eee6a80e0e8faba0234d3f632e4cc6dee /usr.bin/tmux/server-client.c
parent- remove a useless member of struct cond (diff)
downloadwireguard-openbsd-a18122f87d1be1bb6c3e4edde905492843e55c90.tar.xz
wireguard-openbsd-a18122f87d1be1bb6c3e4edde905492843e55c90.zip
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.
Diffstat (limited to 'usr.bin/tmux/server-client.c')
-rw-r--r--usr.bin/tmux/server-client.c37
1 files changed, 19 insertions, 18 deletions
diff --git a/usr.bin/tmux/server-client.c b/usr.bin/tmux/server-client.c
index 8b169661f4d..7c1de8b314e 100644
--- a/usr.bin/tmux/server-client.c
+++ b/usr.bin/tmux/server-client.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: server-client.c,v 1.9 2009/10/27 13:03:33 nicm Exp $ */
+/* $OpenBSD: server-client.c,v 1.10 2009/11/03 20:29:47 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -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;