Serenity Operating System
1/*
2 * Copyright (c) 2022, kleines Filmröllchen <filmroellchen@serenityos.org>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include "ScreenBackend.h"
10#include "ScreenLayout.h"
11#include <AK/DeprecatedString.h>
12#include <AK/Error.h>
13#include <AK/Span.h>
14
15namespace WindowServer {
16
17class VirtualScreenBackend : public ScreenBackend {
18public:
19 virtual ~VirtualScreenBackend();
20
21 VirtualScreenBackend() = default;
22
23private:
24 friend class Screen;
25
26 virtual ErrorOr<void> open() override;
27
28 virtual void set_head_buffer(int index) override;
29
30 virtual ErrorOr<void> flush_framebuffer_rects(int, ReadonlySpan<FBRect>) override { return {}; }
31
32 virtual ErrorOr<void> flush_framebuffer() override { return {}; }
33
34 virtual ErrorOr<void> unmap_framebuffer() override;
35 virtual ErrorOr<void> map_framebuffer() override;
36
37 virtual ErrorOr<void> set_safe_head_mode_setting() override;
38
39 virtual ErrorOr<void> set_head_mode_setting(GraphicsHeadModeSetting) override;
40 virtual ErrorOr<GraphicsHeadModeSetting> get_head_mode_setting() override;
41
42 int m_height { 0 };
43 int m_width { 0 };
44 bool m_first_buffer_active { true };
45};
46
47}