/* * Copyright (c) 2021, Sahan Fernando * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Kernel::Graphics::VirtIOGPU { class Console final : public GenericFramebufferConsole { public: static NonnullLockRefPtr initialize(VirtIODisplayConnector& parent_display_connector); virtual void set_resolution(size_t width, size_t height, size_t pitch) override; virtual void flush(size_t x, size_t y, size_t width, size_t height) override; virtual void enable() override; virtual void set_cursor(size_t x, size_t y) override; private: void enqueue_refresh_timer(); virtual u8* framebuffer_data() override; virtual void hide_cursor() override; virtual void show_cursor() override; Console(VirtIODisplayConnector const& parent_display_connector, DisplayConnector::ModeSetting current_resolution); NonnullLockRefPtr m_parent_display_connector; bool m_dirty { false }; }; }