render: frame-paced presentation with per-row damage and blink

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I4e925b4d1d904d9592060e968d84ec906a6a6964
This commit is contained in:
raf 2026-06-25 08:17:55 +03:00
commit f1c8271d31
No known key found for this signature in database
GPG key ID: 29D95B64378DB4BF
4 changed files with 274 additions and 102 deletions

View file

@ -473,11 +473,14 @@ impl Perform for Term {
}),
'q' if intermediates.first() == Some(&b'>') => self.report_version(),
'q' if intermediates.first() == Some(&b' ') => {
self.grid.set_cursor_shape(match raw(params, 0) {
let code = raw(params, 0);
self.grid.set_cursor_shape(match code {
3 | 4 => CursorShape::Underline,
5 | 6 => CursorShape::Beam,
_ => CursorShape::Block,
});
// Even codes are steady; 0/1 and other odd codes blink.
self.grid.set_cursor_blink(code == 0 || code % 2 == 1);
}
'p' if intermediates.contains(&b'$') => self.report_mode(params, private),
'n' => self.device_status(params),