mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 04:37:34 +00:00
Userland: Remove stale remainders of old framebuffer devices
This commit is contained in:
parent
b7d0b5d745
commit
b5e5b299c4
7 changed files with 29 additions and 36 deletions
|
@ -24,10 +24,10 @@ HardwareScreenBackend::HardwareScreenBackend(String device)
|
|||
|
||||
ErrorOr<void> HardwareScreenBackend::open()
|
||||
{
|
||||
m_framebuffer_fd = TRY(Core::System::open(m_device, O_RDWR | O_CLOEXEC));
|
||||
m_display_connector_fd = TRY(Core::System::open(m_device, O_RDWR | O_CLOEXEC));
|
||||
|
||||
GraphicsConnectorProperties properties;
|
||||
if (graphics_connector_get_properties(m_framebuffer_fd, &properties) < 0)
|
||||
if (graphics_connector_get_properties(m_display_connector_fd, &properties) < 0)
|
||||
return Error::from_syscall(String::formatted("failed to ioctl {}", m_device), errno);
|
||||
|
||||
m_can_device_flush_buffers = (properties.partial_flushing_support != 0);
|
||||
|
@ -38,9 +38,9 @@ ErrorOr<void> HardwareScreenBackend::open()
|
|||
|
||||
HardwareScreenBackend::~HardwareScreenBackend()
|
||||
{
|
||||
if (m_framebuffer_fd >= 0) {
|
||||
close(m_framebuffer_fd);
|
||||
m_framebuffer_fd = -1;
|
||||
if (m_display_connector_fd >= 0) {
|
||||
close(m_display_connector_fd);
|
||||
m_display_connector_fd = -1;
|
||||
}
|
||||
if (m_framebuffer) {
|
||||
MUST(Core::System::munmap(m_framebuffer, m_size_in_bytes));
|
||||
|
@ -54,10 +54,10 @@ ErrorOr<void> HardwareScreenBackend::set_head_mode_setting(GraphicsHeadModeSetti
|
|||
{
|
||||
|
||||
GraphicsHeadModeSetting requested_mode_setting = mode_setting;
|
||||
auto rc = graphics_connector_set_head_mode_setting(m_framebuffer_fd, &requested_mode_setting);
|
||||
auto rc = graphics_connector_set_head_mode_setting(m_display_connector_fd, &requested_mode_setting);
|
||||
if (rc != 0) {
|
||||
dbgln("Failed to set backend mode setting: falling back to safe resolution");
|
||||
rc = graphics_connector_set_safe_head_mode_setting(m_framebuffer_fd);
|
||||
rc = graphics_connector_set_safe_head_mode_setting(m_display_connector_fd);
|
||||
if (rc != 0) {
|
||||
dbgln("Failed to set backend safe mode setting: aborting");
|
||||
return Error::from_syscall("graphics_connector_set_safe_head_mode_setting"sv, rc);
|
||||
|
@ -81,12 +81,12 @@ ErrorOr<void> HardwareScreenBackend::map_framebuffer()
|
|||
{
|
||||
GraphicsHeadModeSetting mode_setting {};
|
||||
memset(&mode_setting, 0, sizeof(GraphicsHeadModeSetting));
|
||||
int rc = graphics_connector_get_head_mode_setting(m_framebuffer_fd, &mode_setting);
|
||||
int rc = graphics_connector_get_head_mode_setting(m_display_connector_fd, &mode_setting);
|
||||
if (rc != 0) {
|
||||
return Error::from_syscall("graphics_connector_get_head_mode_setting"sv, rc);
|
||||
}
|
||||
m_size_in_bytes = mode_setting.horizontal_stride * mode_setting.vertical_active * 2;
|
||||
m_framebuffer = (Gfx::ARGB32*)TRY(Core::System::mmap(nullptr, m_size_in_bytes, PROT_READ | PROT_WRITE, MAP_SHARED, m_framebuffer_fd, 0));
|
||||
m_framebuffer = (Gfx::ARGB32*)TRY(Core::System::mmap(nullptr, m_size_in_bytes, PROT_READ | PROT_WRITE, MAP_SHARED, m_display_connector_fd, 0));
|
||||
|
||||
if (m_can_set_head_buffer) {
|
||||
// Note: fall back to assuming the second buffer starts right after the last line of the first
|
||||
|
@ -106,7 +106,7 @@ ErrorOr<GraphicsHeadModeSetting> HardwareScreenBackend::get_head_mode_setting()
|
|||
{
|
||||
GraphicsHeadModeSetting mode_setting {};
|
||||
memset(&mode_setting, 0, sizeof(GraphicsHeadModeSetting));
|
||||
int rc = graphics_connector_get_head_mode_setting(m_framebuffer_fd, &mode_setting);
|
||||
int rc = graphics_connector_get_head_mode_setting(m_display_connector_fd, &mode_setting);
|
||||
if (rc != 0) {
|
||||
return Error::from_syscall("graphics_connector_get_head_mode_setting"sv, rc);
|
||||
}
|
||||
|
@ -121,13 +121,13 @@ void HardwareScreenBackend::set_head_buffer(int head_index)
|
|||
GraphicsHeadVerticalOffset offset { 0, 0 };
|
||||
if (head_index == 1)
|
||||
offset.offsetted = 1;
|
||||
int rc = fb_set_head_vertical_offset_buffer(m_framebuffer_fd, &offset);
|
||||
int rc = fb_set_head_vertical_offset_buffer(m_display_connector_fd, &offset);
|
||||
VERIFY(rc == 0);
|
||||
}
|
||||
|
||||
ErrorOr<void> HardwareScreenBackend::flush_framebuffer_rects(int buffer_index, Span<FBRect const> flush_rects)
|
||||
{
|
||||
int rc = fb_flush_buffers(m_framebuffer_fd, buffer_index, flush_rects.data(), (unsigned)flush_rects.size());
|
||||
int rc = fb_flush_buffers(m_display_connector_fd, buffer_index, flush_rects.data(), (unsigned)flush_rects.size());
|
||||
if (rc == -ENOTSUP)
|
||||
m_can_device_flush_buffers = false;
|
||||
else if (rc != 0)
|
||||
|
@ -137,7 +137,7 @@ ErrorOr<void> HardwareScreenBackend::flush_framebuffer_rects(int buffer_index, S
|
|||
|
||||
ErrorOr<void> HardwareScreenBackend::flush_framebuffer()
|
||||
{
|
||||
int rc = fb_flush_head(m_framebuffer_fd);
|
||||
int rc = fb_flush_head(m_display_connector_fd);
|
||||
if (rc == -ENOTSUP)
|
||||
m_can_device_flush_entire_framebuffer = false;
|
||||
else if (rc != 0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue