From de5a0fddf30cf8a522f43b204f06a093c95af74c Mon Sep 17 00:00:00 2001 From: nicm Date: Wed, 19 Oct 2016 09:22:07 +0000 Subject: Alerts are too slow, so rather than walking all sessions and windows, add a link of winlinks to each window and a pointer to the session to each winlink. Also rewrite the alerts processing to return to the old behaviour (alert in any window sets the flag on any winlink). --- usr.bin/tmux/server-client.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'usr.bin/tmux/server-client.c') diff --git a/usr.bin/tmux/server-client.c b/usr.bin/tmux/server-client.c index 85c2a258ae0..ed910d57a8d 100644 --- a/usr.bin/tmux/server-client.c +++ b/usr.bin/tmux/server-client.c @@ -1,4 +1,4 @@ -/* $OpenBSD: server-client.c,v 1.196 2016/10/16 22:06:40 nicm Exp $ */ +/* $OpenBSD: server-client.c,v 1.197 2016/10/19 09:22:07 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott @@ -853,6 +853,7 @@ server_client_loop(void) struct client *c; struct window *w; struct window_pane *wp; + int focus; TAILQ_FOREACH(c, &clients, entry) { server_client_check_exit(c); @@ -866,11 +867,13 @@ server_client_loop(void) * Any windows will have been redrawn as part of clients, so clear * their flags now. Also check pane focus and resize. */ + focus = options_get_number(global_options, "focus-events"); RB_FOREACH(w, windows, &windows) { w->flags &= ~WINDOW_REDRAW; TAILQ_FOREACH(wp, &w->panes, entry) { if (wp->fd != -1) { - server_client_check_focus(wp); + if (focus) + server_client_check_focus(wp); server_client_check_resize(wp); } wp->flags &= ~PANE_REDRAW; @@ -937,10 +940,6 @@ server_client_check_focus(struct window_pane *wp) struct client *c; int push; - /* Are focus events off? */ - if (!options_get_number(global_options, "focus-events")) - return; - /* Do we need to push the focus state? */ push = wp->flags & PANE_FOCUSPUSH; wp->flags &= ~PANE_FOCUSPUSH; -- cgit v1.2.3-59-g8ed1b