mirror of
https://github.com/RGBCube/serenity
synced 2025-07-04 08:17:36 +00:00

The ScreenBackend is a thin wrapper around the actual screen hardware connection. It contains all the variables specific to that hardware and abstracts away operations that deal with controlling the hardware. The standard ScreenBackend implementor is HardwareScreenBackend, which contains all the existing frame buffer & ioctl handling code of Screen. I took this opportunity to introduce ErrorOr wherever sensible.
39 lines
984 B
C++
39 lines
984 B
C++
/*
|
|
* Copyright (c) 2022, kleines Filmröllchen <filmroellchen@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "ScreenBackend.h"
|
|
#include "ScreenLayout.h"
|
|
#include <AK/Error.h>
|
|
#include <AK/Span.h>
|
|
#include <AK/String.h>
|
|
#include <sys/ioctl_numbers.h>
|
|
|
|
namespace WindowServer {
|
|
class HardwareScreenBackend : public ScreenBackend {
|
|
public:
|
|
virtual ~HardwareScreenBackend();
|
|
|
|
HardwareScreenBackend(String device);
|
|
|
|
virtual ErrorOr<void> open() override;
|
|
|
|
virtual void set_head_buffer(int index) override;
|
|
|
|
virtual ErrorOr<void> flush_framebuffer_rects(int buffer_index, Span<FBRect const> rects) override;
|
|
|
|
virtual ErrorOr<void> unmap_framebuffer() override;
|
|
virtual ErrorOr<void> map_framebuffer() override;
|
|
|
|
virtual ErrorOr<void> set_head_resolution(FBHeadResolution) override;
|
|
virtual ErrorOr<FBHeadProperties> get_head_properties() override;
|
|
|
|
String m_device {};
|
|
int m_framebuffer_fd { -1 };
|
|
};
|
|
|
|
}
|