diff options
author | nicm <nicm> | 2018-07-11 06:51:39 +0000 |
---|---|---|
committer | nicm <nicm> | 2018-07-11 06:51:39 +0000 |
commit | e7d53020b44c33dfee9080db142e973c434ba8a5 (patch) | |
tree | c4a976c4a8bb2b025c98e8753fbcb6b5ed8d0ade /grid.c | |
parent | 03519021b92cacfe053f13efb0e0657075215619 (diff) | |
download | rtmux-e7d53020b44c33dfee9080db142e973c434ba8a5.tar.gz rtmux-e7d53020b44c33dfee9080db142e973c434ba8a5.tar.bz2 rtmux-e7d53020b44c33dfee9080db142e973c434ba8a5.zip |
Helper function to shorten history.
Diffstat (limited to 'grid.c')
-rw-r--r-- | grid.c | 17 |
1 files changed, 11 insertions, 6 deletions
@@ -286,6 +286,15 @@ grid_compare(struct grid *ga, struct grid *gb) return (0); } +/* Trim lines from the history. */ +static void +grid_trim_history(struct grid *gd, u_int ny) +{ + grid_free_lines(gd, 0, ny); + memmove(&gd->linedata[0], &gd->linedata[ny], + (gd->hsize + gd->sy - ny) * (sizeof *gd->linedata)); +} + /* * Collect lines from the history if at the limit. Free the top (oldest) 10% * and shift up. @@ -308,9 +317,7 @@ grid_collect_history(struct grid *gd) * Free the lines from 0 to ny then move the remaining lines over * them. */ - grid_free_lines(gd, 0, ny); - memmove(&gd->linedata[0], &gd->linedata[ny], - (gd->hsize + gd->sy - ny) * (sizeof *gd->linedata)); + grid_trim_history(gd, ny); gd->hsize -= ny; if (gd->hscrolled > gd->hsize) @@ -340,9 +347,7 @@ grid_scroll_history(struct grid *gd, u_int bg) void grid_clear_history(struct grid *gd) { - grid_free_lines(gd, 0, gd->hsize); - memmove(&gd->linedata[0], &gd->linedata[gd->hsize], - gd->sy * (sizeof *gd->linedata)); + grid_trim_history(gd, gd->hsize); gd->hscrolled = 0; gd->hsize = 0; |