diff options
author | Manuel Schölling <manuel.schoelling@gmx.de> | 2017-01-13 15:07:56 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-01-25 05:54:02 -0500 |
commit | bcd375f7f71f7106c97516bf5395149954ef8810 (patch) | |
tree | d3622fbb8a88f55aa8223c343e6dcb9b81d6740c /drivers/tty/vt | |
parent | 66da39eb91b42ab70dd49ef0b9ac5f4cfa76c9c3 (diff) |
console: Add callback to flush scrollback buffer to consw struct
This new callback is in preparation for persistent scrollback buffer
support for VGA consoles.
With a single scrollback buffer for all consoles, we could flush the
buffer just by invocating consw->con_switch(). But when each VGA console
has its own scrollback buffer, we need a new callback to tell the
video console driver which buffer to flush.
Signed-off-by: Manuel Schölling <manuel.schoelling@gmx.de>
Reviewed-by: Andrey Utkin <andrey_utkin@fastmail.com>
Tested-by: Andrey Utkin <andrey_utkin@fastmail.com>
Tested-by: Adam Borowski <kilobyte@angband.pl>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/vt')
-rw-r--r-- | drivers/tty/vt/vt.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c index 4c10a9df3b91..9d3ce505e7ab 100644 --- a/drivers/tty/vt/vt.c +++ b/drivers/tty/vt/vt.c | |||
@@ -625,6 +625,14 @@ static void save_screen(struct vc_data *vc) | |||
625 | vc->vc_sw->con_save_screen(vc); | 625 | vc->vc_sw->con_save_screen(vc); |
626 | } | 626 | } |
627 | 627 | ||
628 | static void flush_scrollback(struct vc_data *vc) | ||
629 | { | ||
630 | WARN_CONSOLE_UNLOCKED(); | ||
631 | |||
632 | if (vc->vc_sw->con_flush_scrollback) | ||
633 | vc->vc_sw->con_flush_scrollback(vc); | ||
634 | } | ||
635 | |||
628 | /* | 636 | /* |
629 | * Redrawing of screen | 637 | * Redrawing of screen |
630 | */ | 638 | */ |
@@ -1171,6 +1179,7 @@ static void csi_J(struct vc_data *vc, int vpar) | |||
1171 | case 3: /* erase scroll-back buffer (and whole display) */ | 1179 | case 3: /* erase scroll-back buffer (and whole display) */ |
1172 | scr_memsetw(vc->vc_screenbuf, vc->vc_video_erase_char, | 1180 | scr_memsetw(vc->vc_screenbuf, vc->vc_video_erase_char, |
1173 | vc->vc_screenbuf_size); | 1181 | vc->vc_screenbuf_size); |
1182 | flush_scrollback(vc); | ||
1174 | set_origin(vc); | 1183 | set_origin(vc); |
1175 | if (con_is_visible(vc)) | 1184 | if (con_is_visible(vc)) |
1176 | update_screen(vc); | 1185 | update_screen(vc); |