mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-27 01:40:16 -05:00
grid: don't pre-allocate the entire grid (with all scrollback lines)
The row array may now contain NULL pointers. This means the corresponding row hasn't yet been allocated and initialized. On a resize, we explicitly allocate the visible rows. Uninitialized rows are then allocated the first time they are referenced.
This commit is contained in:
parent
8f0d574dcb
commit
1ff1b3a71e
7 changed files with 68 additions and 45 deletions
19
grid.c
19
grid.c
|
|
@ -25,3 +25,22 @@ grid_swap_row(struct grid *grid, int row_a, int row_b)
|
|||
grid->rows[real_a]->dirty = true;
|
||||
grid->rows[real_b]->dirty = true;
|
||||
}
|
||||
|
||||
struct row *
|
||||
grid_row_alloc(int cols)
|
||||
{
|
||||
struct row *row = malloc(sizeof(*row));
|
||||
row->cells = calloc(cols, sizeof(row->cells[0]));
|
||||
row->dirty = false; /* TODO: parameter? */
|
||||
return row;
|
||||
}
|
||||
|
||||
void
|
||||
grid_row_free(struct row *row)
|
||||
{
|
||||
if (row == NULL)
|
||||
return;
|
||||
|
||||
free(row->cells);
|
||||
free(row);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue