diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2012-03-15 09:10:33 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2012-03-15 09:10:33 +0000 |
commit | 698361ccde262b82ce91c81891b767f6752ebf67 (patch) | |
tree | 3ed538626e51d3a98615b9cf633d8c30dfe1819c /tty.c | |
parent | 71df37c247a3fcebfd24637410bd4ef41801147c (diff) | |
download | rtmux-698361ccde262b82ce91c81891b767f6752ebf67.tar.gz rtmux-698361ccde262b82ce91c81891b767f6752ebf67.tar.bz2 rtmux-698361ccde262b82ce91c81891b767f6752ebf67.zip |
Add a helper function for enabling an optimization to make some code
clearer.
Diffstat (limited to 'tty.c')
-rw-r--r-- | tty.c | 21 |
1 files changed, 16 insertions, 5 deletions
@@ -502,6 +502,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 * CSR not supported, or window is a pane that doesn't take up the full * width of the terminal. @@ -514,12 +527,10 @@ tty_redraw_region(struct tty *tty, const struct tty_ctx *ctx) u_int i; /* - * If region is >= 50% of the screen, just schedule a window redraw. In - * most cases, this is 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 region is large, schedule a window redraw. In most cases this is + * likely to be followed by some more scrolling. */ - if (ctx->orlower - ctx->orupper >= screen_size_y(s) / 2) { + if (tty_large_region(tty, ctx)) { wp->flags |= PANE_REDRAW; return; } |