diff options
author | nicm <nicm> | 2020-04-18 06:15:07 +0000 |
---|---|---|
committer | nicm <nicm> | 2020-04-18 06:15:07 +0000 |
commit | d94bdf7420eb6d0ef88783a35db2c592a3fccec0 (patch) | |
tree | 28e41a1116bfb1442a6cd405ad013564fb95d463 /server-client.c | |
parent | 5289d4ed13e18fa4430aba27af0d525d2f76fc30 (diff) | |
download | rtmux-d94bdf7420eb6d0ef88783a35db2c592a3fccec0.tar.gz rtmux-d94bdf7420eb6d0ef88783a35db2c592a3fccec0.tar.bz2 rtmux-d94bdf7420eb6d0ef88783a35db2c592a3fccec0.zip |
Revert previous, there is still a problem.
Diffstat (limited to 'server-client.c')
-rw-r--r-- | server-client.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/server-client.c b/server-client.c index a045c44b..8365831f 100644 --- a/server-client.c +++ b/server-client.c @@ -1681,7 +1681,7 @@ server_client_check_redraw(struct client *c) struct session *s = c->session; struct tty *tty = &c->tty; struct window_pane *wp; - int needed, flags, mode = tty->mode, new_flags = 0; + int needed, flags, mode = tty->mode; struct timeval tv = { .tv_usec = 1000 }; static struct event ev; size_t left; @@ -1689,12 +1689,11 @@ server_client_check_redraw(struct client *c) if (c->flags & (CLIENT_CONTROL|CLIENT_SUSPENDED)) return; if (c->flags & CLIENT_ALLREDRAWFLAGS) { - log_debug("%s: redraw%s%s%s%s%s", c->name, + log_debug("%s: redraw%s%s%s%s", c->name, (c->flags & CLIENT_REDRAWWINDOW) ? " window" : "", (c->flags & CLIENT_REDRAWSTATUS) ? " status" : "", (c->flags & CLIENT_REDRAWBORDERS) ? " borders" : "", - (c->flags & CLIENT_REDRAWOVERLAY) ? " overlay" : "", - (c->flags & CLIENT_REDRAWPANES) ? " panes" : ""); + (c->flags & CLIENT_REDRAWOVERLAY) ? " overlay" : ""); } /* @@ -1712,8 +1711,6 @@ server_client_check_redraw(struct client *c) break; } } - if (needed) - new_flags |= CLIENT_REDRAWPANES; } if (needed && (left = EVBUFFER_LENGTH(tty->out)) != 0) { log_debug("%s: redraw deferred (%zu left)", c->name, left); @@ -1723,7 +1720,12 @@ server_client_check_redraw(struct client *c) log_debug("redraw timer started"); evtimer_add(&ev, &tv); } - c->flags |= new_flags; + + /* + * We may have got here for a single pane redraw, but force a + * full redraw next time in case other panes have been updated. + */ + c->flags |= CLIENT_ALLREDRAWFLAGS; return; } else if (needed) log_debug("%s: redraw needed", c->name); @@ -1739,12 +1741,10 @@ server_client_check_redraw(struct client *c) */ TAILQ_FOREACH(wp, &c->session->curw->window->panes, entry) { if (wp->flags & PANE_REDRAW) { - log_debug("%s: redrawing pane %%%u", __func__, wp->id); tty_update_mode(tty, tty->mode, NULL); screen_redraw_pane(c, wp); } } - c->flags &= ~CLIENT_REDRAWPANES; } if (c->flags & CLIENT_ALLREDRAWFLAGS) { |