From 4bc0a83d51624911195fb4b033f51aa7bca43e54 Mon Sep 17 00:00:00 2001 From: nicm Date: Mon, 20 Apr 2020 06:07:39 +0000 Subject: [PATCH] Need to check for pane redrawing even if just the window flag is set (the pane flag may not have been previously set to avoid looping the windows). --- server-client.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/server-client.c b/server-client.c index 6eda2b45..18f44ff9 100644 --- a/server-client.c +++ b/server-client.c @@ -1726,11 +1726,15 @@ server_client_check_redraw(struct client *c) log_debug("redraw timer started"); evtimer_add(&ev, &tv); } - if (new_flags & CLIENT_REDRAWPANES) { + + if (~c->flags & CLIENT_REDRAWWINDOW) { c->redraw_panes = 0; TAILQ_FOREACH(wp, &w->panes, entry) { - if (wp->flags & PANE_REDRAW) + if (wp->flags & PANE_REDRAW) { + log_debug("%s: pane %%%u needs redraw", + c->name, wp->id); c->redraw_panes |= (1 << bit); + } if (++bit == 64) { /* * If more that 64 panes, give up and @@ -1741,6 +1745,8 @@ server_client_check_redraw(struct client *c) break; } } + if (c->redraw_panes != 0) + c->flags |= CLIENT_REDRAWPANES; } c->flags |= new_flags; return;