diff --git a/src/backends/metal/transaction.rs b/src/backends/metal/transaction.rs index 40047b0a..abe1321f 100644 --- a/src/backends/metal/transaction.rs +++ b/src/backends/metal/transaction.rs @@ -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 diff --git a/src/backends/metal/video.rs b/src/backends/metal/video.rs index 62963ab9..4b1aaaed 100644 --- a/src/backends/metal/video.rs +++ b/src/backends/metal/video.rs @@ -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) { diff --git a/src/cli/randr.rs b/src/cli/randr.rs index b784a2fa..09449dbd 100644 --- a/src/cli/randr.rs +++ b/src/cli/randr.rs @@ -853,10 +853,11 @@ impl Randr { fn print_connector(&self, connector: &Connector, modes: bool, formats: bool) { println!(" {}:", connector.name); + if !connector.enabled { + println!(" disabled"); + } let Some(o) = &connector.output else { - if !connector.enabled { - println!(" disabled"); - } else { + if connector.enabled { println!(" disconnected"); } return; @@ -869,7 +870,9 @@ impl Randr { o.width_mm, o.height_mm ); if o.non_desktop { - println!(" non-desktop"); + if connector.enabled { + println!(" non-desktop"); + } return; } println!(" VRR capable: {}", o.vrr_capable);