Kernel: Optimize VTTY cursor rendering

cursor is now only updated once after all consecutive `putchar`s are
handled.
This commit is contained in:
2025-04-18 03:55:56 +03:00
parent 6858546ce9
commit 9258c73484
4 changed files with 23 additions and 3 deletions

View File

@@ -41,7 +41,6 @@ namespace Kernel
virtual uint32_t height() const = 0;
virtual uint32_t width() const = 0;
void putchar(uint8_t ch);
virtual dev_t rdev() const final override { return m_rdev; }
@@ -60,10 +59,13 @@ namespace Kernel
TTY(mode_t mode, uid_t uid, gid_t gid);
virtual void putchar_impl(uint8_t ch) = 0;
virtual void update_cursor() {}
virtual BAN::ErrorOr<size_t> read_impl(off_t, BAN::ByteSpan) override;
virtual BAN::ErrorOr<size_t> write_impl(off_t, BAN::ConstByteSpan) override;
private:
void putchar(uint8_t ch);
void do_backspace();
protected:

View File

@@ -24,6 +24,7 @@ namespace Kernel
protected:
virtual BAN::StringView name() const override { return m_name; }
virtual void putchar_impl(uint8_t ch) override;
void update_cursor() override;
private:
VirtualTTY(BAN::RefPtr<TerminalDriver>);
@@ -78,6 +79,7 @@ namespace Kernel
uint32_t m_saved_row { 0 };
uint32_t m_saved_column { 0 };
bool m_cursor_shown { true };
uint32_t m_row { 0 };
uint32_t m_column { 0 };
Cell* m_buffer { nullptr };