version 1.147, 2015/07/29 11:56:02 |
version 1.148, 2015/08/28 12:16:28 |
|
|
if (c->stderr_data != c->stdout_data) |
if (c->stderr_data != c->stdout_data) |
evbuffer_free(c->stderr_data); |
evbuffer_free(c->stderr_data); |
|
|
|
if (event_initialized(&c->status_timer)) |
|
evtimer_del(&c->status_timer); |
screen_free(&c->status); |
screen_free(&c->status); |
|
|
free(c->title); |
free(c->title); |
|
|
|
|
client_lost: |
client_lost: |
server_client_lost(c); |
server_client_lost(c); |
} |
|
|
|
/* Handle client status timer. */ |
|
void |
|
server_client_status_timer(void) |
|
{ |
|
struct client *c; |
|
struct session *s; |
|
struct timeval tv; |
|
int interval; |
|
time_t difference; |
|
|
|
if (gettimeofday(&tv, NULL) != 0) |
|
fatal("gettimeofday failed"); |
|
|
|
TAILQ_FOREACH(c, &clients, entry) { |
|
if (c->session == NULL) |
|
continue; |
|
if (c->message_string != NULL || c->prompt_string != NULL) { |
|
/* |
|
* Don't need timed redraw for messages/prompts so bail |
|
* now. The status timer isn't reset when they are |
|
* redrawn anyway. |
|
*/ |
|
continue; |
|
} |
|
s = c->session; |
|
|
|
if (!options_get_number(&s->options, "status")) |
|
continue; |
|
interval = options_get_number(&s->options, "status-interval"); |
|
|
|
difference = tv.tv_sec - c->status_timer.tv_sec; |
|
if (interval != 0 && difference >= interval) |
|
c->flags |= CLIENT_STATUS; |
|
} |
|
} |
} |
|
|
/* Check for mouse keys. */ |
/* Check for mouse keys. */ |