summaryrefslogtreecommitdiff
path: root/sys/dev/cons
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/cons')
-rw-r--r--sys/dev/cons/cons.c28
-rw-r--r--sys/dev/cons/cons_ansi.c3
2 files changed, 14 insertions, 17 deletions
diff --git a/sys/dev/cons/cons.c b/sys/dev/cons/cons.c
index ce2b154..0735f11 100644
--- a/sys/dev/cons/cons.c
+++ b/sys/dev/cons/cons.c
@@ -65,7 +65,6 @@ static struct cdevsw cons_cdevsw;
static void cons_draw_cursor(struct cons_screen *scr, uint32_t color);
static int cons_handle_special(struct cons_screen *scr, char c);
-static void cons_clear_scr(struct cons_screen *scr, uint32_t bg);
static uint32_t
rgb_invert(uint32_t rgb)
@@ -191,22 +190,14 @@ cons_handle_special(struct cons_screen *scr, char c)
SHOW_CURSOR(scr);
return 0;
case ASCII_LF:
- HIDE_CURSOR(scr);
-
/* Are we past screen width? */
if (scr->ch_row >= scr->nrows - 1) {
cons_clear_scr(scr, scr->bg);
- cons_flush(scr);
- scr->ch_col = 0;
- scr->ch_row = 0;
-
- /* Update cursor */
- scr->curs_row = 0;
- scr->curs_col = 0;
- SHOW_CURSOR(scr);
return 0;
}
+ HIDE_CURSOR(scr);
+
/* Make a newline */
cons_flush(scr);
++scr->ch_row;
@@ -255,18 +246,25 @@ cons_draw_cursor(struct cons_screen *scr, uint32_t color)
* @scr: Screen to clear.
* @bg: Color to clear it to.
*/
-static void
+void
cons_clear_scr(struct cons_screen *scr, uint32_t bg)
{
struct fbdev fbdev = scr->fbdev;
- struct cons_buf *bp;
+
+ cons_flush(scr);
+ HIDE_CURSOR(scr);
+
+ scr->ch_col = 0;
+ scr->ch_row = 0;
+ scr->curs_col = 0;
+ scr->curs_row = 0;
for (size_t i = 0; i < fbdev.height * fbdev.pitch; ++i) {
scr->fb_mem[i] = bg;
}
- bp = scr->ob[scr->nrows - 1];
- bp->flags |= CONS_BUF_CLEAN;
+ SHOW_CURSOR(scr);
+
}
/*
diff --git a/sys/dev/cons/cons_ansi.c b/sys/dev/cons/cons_ansi.c
index 4403f9c..ab1f22a 100644
--- a/sys/dev/cons/cons_ansi.c
+++ b/sys/dev/cons/cons_ansi.c
@@ -90,8 +90,7 @@ ansi_feed(struct ansi_state *statep, char c)
return c;
case 2:
if (c == 'H') {
- cons_reset_cursor(&g_root_scr);
- ansi_reset(statep);
+ cons_clear_scr(&g_root_scr, g_root_scr.bg);
return ANSI_UPDATE_CURSOR;
}
break;