From 5e01b6d663abc086847c9bec145edeb9cd91530a Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Sat, 8 Aug 2009 13:29:27 +0000 Subject: Change the way the grid is stored, previously it was: - a two-dimensional array of cells; - a two-dimensional array of utf8 data; - an array of line lengths. Now it is a single array of a new struct grid_line each of which represents a line and containts the length and an array of cells and an array of utf8 data. This will make it easier to add additional per-line members, such as flags. --- screen.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) (limited to 'screen.c') diff --git a/screen.c b/screen.c index b2bcffa3..bcf52099 100644 --- a/screen.c +++ b/screen.c @@ -194,10 +194,8 @@ screen_resize_y(struct screen *s, u_int sy) } /* Resize line arrays. */ - gd->size = xrealloc(gd->size, gd->hsize + sy, sizeof *gd->size); - gd->data = xrealloc(gd->data, gd->hsize + sy, sizeof *gd->data); - gd->usize = xrealloc(gd->usize, gd->hsize + sy, sizeof *gd->usize); - gd->udata = xrealloc(gd->udata, gd->hsize + sy, sizeof *gd->udata); + gd->linedata = xrealloc( + gd->linedata, gd->hsize + sy, sizeof *gd->linedata); /* Size increasing. */ if (sy > oldy) { @@ -218,12 +216,8 @@ screen_resize_y(struct screen *s, u_int sy) needed -= available; /* Then fill the rest in with blanks. */ - for (i = gd->hsize + sy - needed; i < gd->hsize + sy; i++) { - gd->size[i] = 0; - gd->data[i] = NULL; - gd->usize[i] = 0; - gd->udata[i] = NULL; - } + for (i = gd->hsize + sy - needed; i < gd->hsize + sy; i++) + memset(&gd->linedata[i], 0, sizeof gd->linedata[i]); } /* Set the new size, and reset the scroll region. */ -- cgit