diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2009-11-13 17:33:07 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2009-11-13 17:33:07 +0000 |
commit | 8e479662255f480cabc45af5edc10098dc3f1819 (patch) | |
tree | e4e1681a98d5a33c876a31283241f67615e715cb /server-fn.c | |
parent | 1415eb3dd249e7730b151a5cfd61c47a712a522f (diff) |
Destroy panes immediately rather than checking them all every loop.
Diffstat (limited to 'server-fn.c')
-rw-r--r-- | server-fn.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/server-fn.c b/server-fn.c index f31e1337..ae1340e7 100644 --- a/server-fn.c +++ b/server-fn.c @@ -317,6 +317,27 @@ server_unlink_window(struct session *s, struct winlink *wl) } void +server_destroy_pane(struct window_pane *wp) +{ + struct window *w = wp->window; + + close(wp->fd); + bufferevent_free(wp->event); + wp->fd = -1; + + if (options_get_number(&w->options, "remain-on-exit")) + return; + + layout_close_pane(wp); + window_remove_pane(w, wp); + + if (TAILQ_EMPTY(&w->panes)) + server_kill_window(w); + else + server_redraw_window(w); +} + +void server_destroy_session_group(struct session *s) { struct session_group *sg; |