diff --git a/Kernel/Graphics/Console/BootFramebufferConsole.cpp b/Kernel/Graphics/Console/BootFramebufferConsole.cpp index 111c05e285..36ab11c2d6 100644 --- a/Kernel/Graphics/Console/BootFramebufferConsole.cpp +++ b/Kernel/Graphics/Console/BootFramebufferConsole.cpp @@ -71,6 +71,31 @@ void BootFramebufferConsole::write(size_t x, size_t y, char ch, Color background GenericFramebufferConsoleImpl::write(x, y, ch, background, foreground, critical); } +void BootFramebufferConsole::set_cursor(size_t x, size_t y) +{ + // Note: To ensure we don't trigger a deadlock, let's assert in + // case we already locked the spinlock, so we know there's a bug + // in the call path. + VERIFY(!m_lock.is_locked()); + SpinlockLocker lock(m_lock); + hide_cursor(); + m_x = x; + m_y = y; + show_cursor(); +} + +void BootFramebufferConsole::hide_cursor() +{ + VERIFY(m_lock.is_locked()); + GenericFramebufferConsoleImpl::hide_cursor(); +} + +void BootFramebufferConsole::show_cursor() +{ + VERIFY(m_lock.is_locked()); + GenericFramebufferConsoleImpl::show_cursor(); +} + u8* BootFramebufferConsole::framebuffer_data() { VERIFY(m_lock.is_locked()); diff --git a/Kernel/Graphics/Console/BootFramebufferConsole.h b/Kernel/Graphics/Console/BootFramebufferConsole.h index 690109ff4d..a04a8282e0 100644 --- a/Kernel/Graphics/Console/BootFramebufferConsole.h +++ b/Kernel/Graphics/Console/BootFramebufferConsole.h @@ -30,6 +30,11 @@ public: BootFramebufferConsole(PhysicalAddress framebuffer_addr, size_t width, size_t height, size_t pitch); #endif +private: + virtual void set_cursor(size_t x, size_t y) override; + virtual void hide_cursor() override; + virtual void show_cursor() override; + protected: virtual void clear_glyph(size_t x, size_t y) override;