From ae6bdc4e29a6e38d0305d620b2301de6328dde0e Mon Sep 17 00:00:00 2001 From: Daniel Bertalan Date: Wed, 2 Jun 2021 15:36:31 +0200 Subject: LibVT+Kernel: Clean up scroll API This commit cleans up some of the `#ifdef`-ed code smell in `Terminal`, by extending the scroll APIs to take a range of lines as a parameter. This makes it possible to use the same code for `IL`/`DL` as for scrolling. Note that the current scrolling implementation is very naive, and does many insertions/deletions in the middle of arrays, whereas swaps should be enough. This optimization will come in a later commit. The `linefeed` override was removed from `VirtualConsole`. Previously, it exhibited incorrect behavior by moving to column 0. Now that we use the method defined in `Terminal`, code which relied on this behavior stopped working. We go instead go through the TTY layer which handles the various output flags. Passing the input character-by-character seems a bit excessive, so a fix for it will come in another PR. --- Kernel/TTY/TTY.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'Kernel/TTY/TTY.h') diff --git a/Kernel/TTY/TTY.h b/Kernel/TTY/TTY.h index 9e5ee61bfd..7813b0abf9 100644 --- a/Kernel/TTY/TTY.h +++ b/Kernel/TTY/TTY.h @@ -58,7 +58,7 @@ protected: TTY(unsigned major, unsigned minor); void emit(u8, bool do_evaluate_block_conditions = false); - virtual void echo(u8) = 0; + void echo_with_processing(u8); bool can_do_backspace() const; void do_backspace(); @@ -80,7 +80,8 @@ protected: private: // ^CharacterDevice virtual bool is_tty() const final override { return true; } - inline void echo_with_processing(u8); + + virtual void echo(u8) = 0; template void process_output(u8, Functor put_char); -- cgit v1.2.3