mirror of
https://github.com/tmux/tmux.git
synced 2025-09-02 13:37:12 +00:00
Merge branch 'obsd-master' into master
This commit is contained in:
25
server-fn.c
25
server-fn.c
@ -402,9 +402,8 @@ server_destroy_session_group(struct session *s)
|
||||
static struct session *
|
||||
server_next_session(struct session *s)
|
||||
{
|
||||
struct session *s_loop, *s_out;
|
||||
struct session *s_loop, *s_out = NULL;
|
||||
|
||||
s_out = NULL;
|
||||
RB_FOREACH(s_loop, sessions, &sessions) {
|
||||
if (s_loop == s)
|
||||
continue;
|
||||
@ -415,17 +414,35 @@ server_next_session(struct session *s)
|
||||
return (s_out);
|
||||
}
|
||||
|
||||
static struct session *
|
||||
server_next_detached_session(struct session *s)
|
||||
{
|
||||
struct session *s_loop, *s_out = NULL;
|
||||
|
||||
RB_FOREACH(s_loop, sessions, &sessions) {
|
||||
if (s_loop == s || s_loop->attached)
|
||||
continue;
|
||||
if (s_out == NULL ||
|
||||
timercmp(&s_loop->activity_time, &s_out->activity_time, <))
|
||||
s_out = s_loop;
|
||||
}
|
||||
return (s_out);
|
||||
}
|
||||
|
||||
void
|
||||
server_destroy_session(struct session *s)
|
||||
{
|
||||
struct client *c;
|
||||
struct session *s_new;
|
||||
int detach_on_destroy;
|
||||
|
||||
if (!options_get_number(s->options, "detach-on-destroy"))
|
||||
detach_on_destroy = options_get_number(s->options, "detach-on-destroy");
|
||||
if (detach_on_destroy == 0)
|
||||
s_new = server_next_session(s);
|
||||
else if (detach_on_destroy == 2)
|
||||
s_new = server_next_detached_session(s);
|
||||
else
|
||||
s_new = NULL;
|
||||
|
||||
TAILQ_FOREACH(c, &clients, entry) {
|
||||
if (c->session != s)
|
||||
continue;
|
||||
|
Reference in New Issue
Block a user