1
0
Fork 0
forked from wry/wry

metal: don't treat disabled connectors as disconnected

This commit is contained in:
Julian Orth 2025-07-12 12:02:27 +02:00
parent 7ab99bb840
commit ef2b719e77
3 changed files with 12 additions and 10 deletions

View file

@ -1013,7 +1013,6 @@ impl MetalDeviceTransactionWithChange {
mem::swap(o, &mut plane.new);
}
for (_, connector) in &mut slf.connectors {
let is_enabled;
let is_connected;
let is_non_desktop;
{
@ -1021,7 +1020,6 @@ impl MetalDeviceTransactionWithChange {
mem::swap(&mut dd.drm_state, &mut connector.new);
mem::swap(&mut *dd.persistent.state.borrow_mut(), &mut connector.state);
dd.update_cached_fields(&slf.dev.dev);
is_enabled = dd.persistent.state.borrow().enabled;
is_non_desktop = dd.non_desktop_effective;
is_connected = dd.connection == ConnectorStatus::Connected;
}
@ -1052,7 +1050,7 @@ impl MetalDeviceTransactionWithChange {
connector.obj.send_connected();
}
}
} else if is_enabled && is_connected && is_non_desktop {
} else if is_connected && is_non_desktop {
match connector.obj.frontend_state.get() {
FrontState::Removed
| FrontState::Unavailable

View file

@ -388,7 +388,8 @@ impl ConnectorDisplayData {
fn update_non_desktop_effective(&mut self) {
let state = &*self.persistent.state.borrow();
self.non_desktop_effective = state.non_desktop_override.unwrap_or(self.non_desktop);
self.non_desktop_effective =
!state.enabled || state.non_desktop_override.unwrap_or(self.non_desktop);
}
pub fn update_cached_fields(&mut self, dev: &MetalDrmDevice) {
@ -668,8 +669,8 @@ impl MetalConnector {
}
fn connected(&self) -> bool {
let dd = self.display.borrow_mut();
dd.persistent.state.borrow().enabled && dd.connection == ConnectorStatus::Connected
let dd = self.display.borrow();
dd.connection == ConnectorStatus::Connected
}
pub fn update_drm_feedback(&self) {