From 91c2caa42aea33db5f1bcab2260546b915fac461 Mon Sep 17 00:00:00 2001 From: nicm Date: Wed, 11 Jul 2018 06:51:39 +0000 Subject: [PATCH] Helper function to shorten history. --- usr.bin/tmux/grid.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/usr.bin/tmux/grid.c b/usr.bin/tmux/grid.c index d82317eae85..ec78d1e78f4 100644 --- a/usr.bin/tmux/grid.c +++ b/usr.bin/tmux/grid.c @@ -1,4 +1,4 @@ -/* $OpenBSD: grid.c,v 1.85 2018/07/11 06:43:45 nicm Exp $ */ +/* $OpenBSD: grid.c,v 1.86 2018/07/11 06:51:39 nicm Exp $ */ /* * Copyright (c) 2008 Nicholas Marriott @@ -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; -- 2.20.1