1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 07:47:35 +00:00

DisplaySettings+WindowServer: Add support for display connector devices

This commit is contained in:
Liav A 2022-04-29 17:56:24 +03:00 committed by Andreas Kling
parent e6ebf9e5c1
commit d9a2706079
12 changed files with 308 additions and 38 deletions

View file

@ -231,7 +231,7 @@ bool Screen::open_device()
switch (info.mode) {
case ScreenLayout::Screen::Mode::Device: {
m_backend = make<HardwareScreenBackend>(info.device.value());
m_backend = make<HardwareScreenBackend>(info.device.value(), false);
auto return_value = m_backend->open();
if (return_value.is_error()) {
dbgln("Screen #{}: Failed to open backend: {}", index(), return_value.error());
@ -241,6 +241,17 @@ bool Screen::open_device()
set_resolution(true);
return true;
}
case ScreenLayout::Screen::Mode::DisplayConnectorDevice: {
m_backend = make<HardwareScreenBackend>(info.device.value(), true);
auto return_value = m_backend->open();
if (return_value.is_error()) {
dbgln("Screen #{}: Failed to open display connector backend: {}", index(), return_value.error());
return false;
}
set_resolution(true);
return true;
}
case ScreenLayout::Screen::Mode::Virtual: {
m_backend = make<VirtualScreenBackend>();
// Virtual device open should never fail.
@ -539,6 +550,11 @@ void Screen::flush_display(int buffer_index)
flush_rects.pending_flush_rects.clear_with_capacity();
}
void Screen::write_all_display_contents()
{
MUST(m_backend->write_all_contents(m_virtual_rect));
}
void Screen::flush_display_front_buffer(int front_buffer_index, Gfx::IntRect& rect)
{
VERIFY(m_backend->m_can_device_flush_buffers);