1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 00:17:46 +00:00

WindowServer: Add the screen mode property in the screen configuration

This will allow us to change between a couple of properties, for now
it's only Device and Virtual. (How about Remote :^) ) These get handled
by a different screen backend in the Screen.
This commit is contained in:
kleines Filmröllchen 2022-03-31 18:49:26 +02:00 committed by Linus Groh
parent e95ae4a143
commit be98ce0f9f
6 changed files with 72 additions and 22 deletions

View file

@ -144,14 +144,22 @@ void MonitorSettingsWidget::load_current_settings()
m_screens.clear();
m_screen_edids.clear();
size_t virtual_screen_count = 0;
for (size_t i = 0; i < m_screen_layout.screens.size(); i++) {
String screen_display_name;
if (auto edid = EDID::Parser::from_framebuffer_device(m_screen_layout.screens[i].device, 0); !edid.is_error()) { // TODO: multihead
screen_display_name = display_name_from_edid(edid.value());
m_screen_edids.append(edid.release_value());
if (m_screen_layout.screens[i].mode == WindowServer::ScreenLayout::Screen::Mode::Device) {
if (auto edid = EDID::Parser::from_framebuffer_device(m_screen_layout.screens[i].device.value(), 0); !edid.is_error()) { // TODO: multihead
screen_display_name = display_name_from_edid(edid.value());
m_screen_edids.append(edid.release_value());
} else {
dbgln("Error getting EDID from device {}: {}", m_screen_layout.screens[i].device.value(), edid.error());
screen_display_name = m_screen_layout.screens[i].device.value();
m_screen_edids.append({});
}
} else {
dbgln("Error getting EDID from device {}: {}", m_screen_layout.screens[i].device, edid.error());
screen_display_name = m_screen_layout.screens[i].device;
dbgln("Frame buffer {} is virtual.", i);
screen_display_name = String::formatted("Virtual screen {}", virtual_screen_count++);
m_screen_edids.append({});
}
if (i == m_screen_layout.main_screen_index)