grid: erase: memset() the entire range in one call

This commit is contained in:
Daniel Eklöf 2019-06-19 10:58:24 +02:00
parent efc8cc4914
commit 96731814da
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 10 additions and 10 deletions

8
grid.c
View file

@ -13,17 +13,19 @@
void void
grid_erase(struct grid *grid, int start, int end) grid_erase(struct grid *grid, int start, int end)
{ {
assert(end >= start);
memset(&grid->cells[start], 0, (end - start) * sizeof(grid->cells[0]));
for (int i = start; i < end; i++) { for (int i = start; i < end; i++) {
struct cell *cell = &grid->cells[i]; struct cell *cell = &grid->cells[i];
/* TODO: memset entire range */
memset(cell, 0, sizeof(*cell));
cell->attrs.foreground = grid->foreground; cell->attrs.foreground = grid->foreground;
cell->attrs.background = grid->background; cell->attrs.background = grid->background;
cell->dirty = true; cell->dirty = true;
grid->dirty = true;
} }
grid->dirty = true;
} }
int int

12
vt.c
View file

@ -158,10 +158,9 @@ action(struct terminal *term, enum action action, uint8_t c)
LOG_DBG("execute: 0x%02x", c); LOG_DBG("execute: 0x%02x", c);
switch (c) { switch (c) {
case '\n': case '\n':
LOG_DBG("NEWLINE: %d %d", term->grid.cursor.row, term->grid.rows); if (term->grid.cursor.row == term->grid.rows - 1)
if (term->grid.cursor.row == term->grid.rows - 1) {
grid_scroll(&term->grid, 1); grid_scroll(&term->grid, 1);
} else else
grid_cursor_down(&term->grid, 1); grid_cursor_down(&term->grid, 1);
break; break;
@ -194,11 +193,10 @@ action(struct terminal *term, enum action action, uint8_t c)
case ACTION_PRINT: { case ACTION_PRINT: {
if (term->grid.print_needs_wrap) { if (term->grid.print_needs_wrap) {
if (term->grid.cursor.row == term->grid.rows - 1) { if (term->grid.cursor.row == term->grid.rows - 1) {
assert(false);
grid_scroll(&term->grid, 1); grid_scroll(&term->grid, 1);
} grid_cursor_to(&term->grid, term->grid.cursor.row, 0);
} else
grid_cursor_to(&term->grid, term->grid.cursor.row + 1, 0); grid_cursor_to(&term->grid, term->grid.cursor.row + 1, 0);
} }
struct cell *cell = &term->grid.cells[term->grid.linear_cursor]; struct cell *cell = &term->grid.cells[term->grid.linear_cursor];