diff --git a/cmd-find.c b/cmd-find.c index ff95ae1f..fe5bb3e0 100644 --- a/cmd-find.c +++ b/cmd-find.c @@ -136,7 +136,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; @@ -160,10 +160,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 38226758..a83073dc 100644 --- a/server-client.c +++ b/server-client.c @@ -1173,7 +1173,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 b4defdd4..a9446bc5 100644 --- a/server-fn.c +++ b/server-fn.c @@ -430,7 +430,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 41b10701..e897e765 100644 --- a/server.c +++ b/server.c @@ -319,7 +319,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 c2e7fe19..1a109a83 100644 --- a/session.c +++ b/session.c @@ -266,7 +266,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, @@ -299,7 +299,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 711b3ec6..2f104e22 100644 --- a/tmux.h +++ b/tmux.h @@ -938,9 +938,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;