grid: add per-cell combining characters

The data is *not* added to the cell struct, since that one is too
performance critical.

Instead, the data is added as a separate array in the row struct.

This allows our performance critical code paths that e.g. clear cells
to perform as before.
This commit is contained in:
Daniel Eklöf 2020-05-01 11:49:11 +02:00
parent 69c3e74498
commit b2c4115f3e
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 11 additions and 1 deletions

6
grid.c
View file

@ -34,10 +34,13 @@ grid_row_alloc(int cols, bool initialize)
if (initialize) {
row->cells = calloc(cols, sizeof(row->cells[0]));
row->comb_chars = calloc(cols, sizeof(row->comb_chars[0]));
for (size_t c = 0; c < cols; c++)
row->cells[c].attrs.clean = 1;
} else
} else {
row->cells = malloc(cols * sizeof(row->cells[0]));
row->comb_chars = malloc(cols * sizeof(row->comb_chars[0]));
}
return row;
}
@ -48,6 +51,7 @@ grid_row_free(struct row *row)
if (row == NULL)
return;
free(row->comb_chars);
free(row->cells);
free(row);
}