diff --git a/cmd-find.c b/cmd-find.c index 02450d97..67f6dbe8 100644 --- a/cmd-find.c +++ b/cmd-find.c @@ -135,7 +135,7 @@ cmd_find_best_client(struct session *s) { struct client *c_loop, *c; - if (s->flags & SESSION_UNATTACHED) + if (s->attached == 0) s = NULL; c = NULL; @@ -159,10 +159,10 @@ cmd_find_session_better(struct session *s, struct session *than, int flags) if (than == NULL) return (1); if (flags & CMD_FIND_PREFER_UNATTACHED) { - attached = (~than->flags & SESSION_UNATTACHED); - if (attached && (s->flags & SESSION_UNATTACHED)) + attached = (than->attached != 0); + if (attached && s->attached == 0) return (1); - else if (!attached && (~s->flags & SESSION_UNATTACHED)) + else if (!attached && s->attached != 0) return (0); } return (timercmp(&s->activity_time, &than->activity_time, >)); diff --git a/resize.c b/resize.c index 8ed359b4..1c9694da 100644 --- a/resize.c +++ b/resize.c @@ -36,10 +36,6 @@ * * This is quite inefficient - better/additional data structures are needed * to make it better. - * - * As a side effect, this function updates the SESSION_UNATTACHED flag. This - * flag is necessary to make sure unattached sessions do not limit the size of - * windows that are attached both to them and to other (attached) sessions. */ void @@ -79,11 +75,8 @@ recalculate_sizes(void) s->attached++; } } - if (ssx == UINT_MAX || ssy == UINT_MAX) { - s->flags |= SESSION_UNATTACHED; + if (ssx == UINT_MAX || ssy == UINT_MAX) continue; - } - s->flags &= ~SESSION_UNATTACHED; if (lines != 0 && ssy == 0) ssy = lines; @@ -107,7 +100,7 @@ recalculate_sizes(void) ssx = ssy = UINT_MAX; RB_FOREACH(s, sessions, &sessions) { - if (s->flags & SESSION_UNATTACHED) + if (s->attached == 0) continue; if (flag) has = s->curw->window == w; diff --git a/server-client.c b/server-client.c index 84b93272..7c2c0288 100644 --- a/server-client.c +++ b/server-client.c @@ -1183,7 +1183,7 @@ server_client_check_focus(struct window_pane *wp) TAILQ_FOREACH(c, &clients, entry) { if (c->session == NULL || !(c->flags & CLIENT_FOCUSED)) continue; - if (c->session->flags & SESSION_UNATTACHED) + if (c->session->attached == 0) continue; if (c->session->curw->window == wp->window) diff --git a/server-fn.c b/server-fn.c index df4cc5b9..24a489ac 100644 --- a/server-fn.c +++ b/server-fn.c @@ -431,7 +431,7 @@ server_check_unattached(void) * set, collect them. */ RB_FOREACH(s, sessions, &sessions) { - if (!(s->flags & SESSION_UNATTACHED)) + if (s->attached != 0) continue; if (options_get_number (s->options, "destroy-unattached")) session_destroy(s, __func__); diff --git a/server.c b/server.c index 26a0ce3e..f125fca0 100644 --- a/server.c +++ b/server.c @@ -318,7 +318,7 @@ server_update_socket(void) n = 0; RB_FOREACH(s, sessions, &sessions) { - if (!(s->flags & SESSION_UNATTACHED)) { + if (s->attached != 0) { n++; break; } diff --git a/session.c b/session.c index 9b74326a..2075abe5 100644 --- a/session.c +++ b/session.c @@ -265,7 +265,7 @@ session_lock_timer(__unused int fd, __unused short events, void *arg) { struct session *s = arg; - if (s->flags & SESSION_UNATTACHED) + if (s->attached == 0) return; log_debug("session %s locked, activity time %lld", s->name, @@ -298,7 +298,7 @@ session_update_activity(struct session *s, struct timeval *from) else evtimer_set(&s->lock_timer, session_lock_timer, s); - if (~s->flags & SESSION_UNATTACHED) { + if (s->attached != 0) { timerclear(&tv); tv.tv_sec = options_get_number(s->options, "lock-after-time"); if (tv.tv_sec != 0) diff --git a/tmux.h b/tmux.h index a7a74eb4..be342f0b 100644 --- a/tmux.h +++ b/tmux.h @@ -942,9 +942,8 @@ struct session { struct hooks *hooks; struct options *options; -#define SESSION_UNATTACHED 0x1 /* not attached to any clients */ -#define SESSION_PASTING 0x2 -#define SESSION_ALERTED 0x4 +#define SESSION_PASTING 0x1 +#define SESSION_ALERTED 0x2 int flags; u_int attached;