video/console: Implement ANSI clear line command
There is a standard ANSI terminal escape sequence to clear a whole line of text. So far the DM_VIDEO console was missing this code. Detect the sequence and use vidconsole_set_row with the background colour to fix this omission. Signed-off-by: Andre Przywara <andre.przywara@arm.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
29c158b90d
commit
4422294cbe
@ -346,6 +346,25 @@ static void vidconsole_escape_char(struct udevice *dev, char ch)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 'K': {
|
||||||
|
struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent);
|
||||||
|
int mode;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Clear (parts of) current line
|
||||||
|
* [0K - clear line to end
|
||||||
|
* [2K - clear entire line
|
||||||
|
*/
|
||||||
|
parsenum(priv->escape_buf + 1, &mode);
|
||||||
|
|
||||||
|
if (mode == 2) {
|
||||||
|
int row, col;
|
||||||
|
|
||||||
|
get_cursor_position(priv, &row, &col);
|
||||||
|
vidconsole_set_row(dev, row, vid_priv->colour_bg);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case 'm': {
|
case 'm': {
|
||||||
struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent);
|
struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent);
|
||||||
char *s = priv->escape_buf;
|
char *s = priv->escape_buf;
|
||||||
|
Loading…
Reference in New Issue
Block a user