mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -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
|
|
@ -26,7 +26,7 @@ cmd_scrollback_up(struct terminal *term, int rows)
|
|||
assert(new_view < term->grid->num_rows);
|
||||
|
||||
/* Avoid scrolling in uninitialized rows */
|
||||
while (!term->grid->rows[new_view]->initialized)
|
||||
while (term->grid->rows[new_view] == NULL)
|
||||
new_view = (new_view + 1) % term->grid->num_rows;
|
||||
|
||||
if (new_view == term->grid->view) {
|
||||
|
|
@ -87,7 +87,7 @@ cmd_scrollback_down(struct terminal *term, int rows)
|
|||
|
||||
for (int i = 0; i < term->rows; i++) {
|
||||
int row_no = (new_view + i) % term->grid->num_rows;
|
||||
if (!term->grid->rows[row_no]->initialized) {
|
||||
if (term->grid->rows[row_no] == NULL) {
|
||||
all_initialized = false;
|
||||
new_view--;
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue