mirror of
https://github.com/tmux/tmux.git
synced 2025-09-02 05:21:10 +00:00
Bring back previons fix to only redraw panes that need it after a redraw
is deferred, but clear the pane flags when they are actually redrawn rather than every time.
This commit is contained in:
10
tty.c
10
tty.c
@ -944,6 +944,7 @@ tty_fake_bce(const struct tty *tty, struct window_pane *wp, u_int bg)
|
||||
static void
|
||||
tty_redraw_region(struct tty *tty, const struct tty_ctx *ctx)
|
||||
{
|
||||
struct client *c = tty->client;
|
||||
struct window_pane *wp = ctx->wp;
|
||||
struct screen *s = wp->screen;
|
||||
u_int i;
|
||||
@ -953,6 +954,7 @@ tty_redraw_region(struct tty *tty, const struct tty_ctx *ctx)
|
||||
* likely to be followed by some more scrolling.
|
||||
*/
|
||||
if (tty_large_region(tty, ctx)) {
|
||||
log_debug("%s: %s, large redraw of %%%u", __func__, c->name, wp->id);
|
||||
wp->flags |= PANE_REDRAW;
|
||||
return;
|
||||
}
|
||||
@ -1484,6 +1486,14 @@ tty_write(void (*cmdfn)(struct tty *, const struct tty_ctx *),
|
||||
TAILQ_FOREACH(c, &clients, entry) {
|
||||
if (!tty_client_ready(c, wp))
|
||||
continue;
|
||||
if (c->flags & CLIENT_REDRAWPANES) {
|
||||
/*
|
||||
* Redraw is already deferred to redraw another pane -
|
||||
* redraw this one also when that happens.
|
||||
*/
|
||||
wp->flags |= PANE_REDRAW;
|
||||
break;
|
||||
}
|
||||
|
||||
ctx->bigger = tty_window_offset(&c->tty, &ctx->ox, &ctx->oy,
|
||||
&ctx->sx, &ctx->sy);
|
||||
|
Reference in New Issue
Block a user