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:
parent
e6ebf9e5c1
commit
d9a2706079
12 changed files with 308 additions and 38 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue