Tidy some common code for destroying sessions into a new function.

This commit is contained in:
Nicholas Marriott
2009-09-12 13:01:19 +00:00
parent d771614d33
commit 8cb8a0da8d
3 changed files with 25 additions and 30 deletions

View File

@ -272,10 +272,7 @@ server_kill_window(struct window *w)
{
struct session *s;
struct winlink *wl;
struct client *c;
u_int i, j;
int destroyed;
u_int i;
for (i = 0; i < ARRAY_LENGTH(&sessions); i++) {
s = ARRAY_ITEM(&sessions, i);
@ -284,22 +281,29 @@ server_kill_window(struct window *w)
if ((wl = winlink_find_by_window(&s->windows, w)) == NULL)
continue;
destroyed = session_detach(s, wl);
for (j = 0; j < ARRAY_LENGTH(&clients); j++) {
c = ARRAY_ITEM(&clients, j);
if (c == NULL || c->session != s)
continue;
if (destroyed) {
c->session = NULL;
server_write_client(c, MSG_EXIT, NULL, 0);
} else
server_redraw_client(c);
}
if (session_detach(s, wl))
server_destroy_session(s);
else
server_redraw_session(s);
}
recalculate_sizes();
}
void
server_destroy_session(struct session *s)
{
struct client *c;
u_int i;
for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
c = ARRAY_ITEM(&clients, i);
if (c == NULL || c->session != s)
continue;
c->session = NULL;
server_write_client(c, MSG_EXIT, NULL, 0);
}
}
void
server_set_identify(struct client *c)
{