Sync OpenBSD patchset 1051:

Add a helper function for enabling an optimization to make some code
clearer.
This commit is contained in:
Tiago Cunha 2012-03-18 01:46:37 +00:00
parent c7f078dcbc
commit 84207f06b7

21
tty.c
View File

@ -501,6 +501,19 @@ tty_emulate_repeat(
} }
} }
/*
* Is the region large enough to be worth redrawing once later rather than
* probably several times now? Currently yes if it is more than 50% of the
* pane.
*/
int
tty_large_region(unused struct tty *tty, const struct tty_ctx *ctx)
{
struct window_pane *wp = ctx->wp;
return (ctx->orlower - ctx->orupper >= screen_size_y(wp->screen) / 2);
}
/* /*
* Redraw scroll region using data from screen (already updated). Used when * Redraw scroll region using data from screen (already updated). Used when
* CSR not supported, or window is a pane that doesn't take up the full * CSR not supported, or window is a pane that doesn't take up the full
@ -514,12 +527,10 @@ tty_redraw_region(struct tty *tty, const struct tty_ctx *ctx)
u_int i; u_int i;
/* /*
* If region is >= 50% of the screen, just schedule a window redraw. In * If region is large, schedule a window redraw. In most cases this is
* most cases, this is likely to be followed by some more scrolling - * likely to be followed by some more scrolling.
* without this, the entire pane ends up being redrawn many times which
* can be much more data.
*/ */
if (ctx->orlower - ctx->orupper >= screen_size_y(s) / 2) { if (tty_large_region(tty, ctx)) {
wp->flags |= PANE_REDRAW; wp->flags |= PANE_REDRAW;
return; return;
} }