Kernel: Optimize VTTY cursor rendering
cursor is now only updated once after all consecutive `putchar`s are handled.
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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 };
|
||||
|
||||
Reference in New Issue
Block a user