mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-09 05:33:58 -04:00
term: "cache" pointer to current line
This adds a pointer to the first cell on the current line. This pointer must be updated every time the row changes. The advantage is mainly that PRINT doesn't have to call grid_get_range(), which is fairly expensive.
This commit is contained in:
parent
ed68eafdf0
commit
9682e15deb
3 changed files with 14 additions and 5 deletions
12
terminal.c
12
terminal.c
|
|
@ -169,6 +169,12 @@ term_cursor_to(struct terminal *term, int row, int col)
|
|||
term->cursor.linear = new_linear;
|
||||
term->cursor.col = col;
|
||||
term->cursor.row = row;
|
||||
|
||||
size_t len = term->cols;
|
||||
term->grid->cur_line = grid_get_range(
|
||||
term->grid, term->cursor.linear - col, &len);
|
||||
|
||||
assert(len == (size_t)term->cols);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -253,6 +259,12 @@ term_scroll_partial(struct terminal *term, struct scroll_region region, int rows
|
|||
max(0, region.end - rows) * term->cols, 0, rows * term->cols);
|
||||
|
||||
term_damage_scroll(term, DAMAGE_SCROLL, region, rows);
|
||||
|
||||
size_t len = term->cols;
|
||||
term->grid->cur_line = grid_get_range(
|
||||
term->grid, term->cursor.linear - term->cursor.col, &len);
|
||||
|
||||
assert(len == (size_t)term->cols);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue