metal: don't treat disabled connectors as disconnected
This commit is contained in:
parent
7ab99bb840
commit
ef2b719e77
3 changed files with 12 additions and 10 deletions
|
|
@ -1013,7 +1013,6 @@ impl MetalDeviceTransactionWithChange {
|
||||||
mem::swap(o, &mut plane.new);
|
mem::swap(o, &mut plane.new);
|
||||||
}
|
}
|
||||||
for (_, connector) in &mut slf.connectors {
|
for (_, connector) in &mut slf.connectors {
|
||||||
let is_enabled;
|
|
||||||
let is_connected;
|
let is_connected;
|
||||||
let is_non_desktop;
|
let is_non_desktop;
|
||||||
{
|
{
|
||||||
|
|
@ -1021,7 +1020,6 @@ impl MetalDeviceTransactionWithChange {
|
||||||
mem::swap(&mut dd.drm_state, &mut connector.new);
|
mem::swap(&mut dd.drm_state, &mut connector.new);
|
||||||
mem::swap(&mut *dd.persistent.state.borrow_mut(), &mut connector.state);
|
mem::swap(&mut *dd.persistent.state.borrow_mut(), &mut connector.state);
|
||||||
dd.update_cached_fields(&slf.dev.dev);
|
dd.update_cached_fields(&slf.dev.dev);
|
||||||
is_enabled = dd.persistent.state.borrow().enabled;
|
|
||||||
is_non_desktop = dd.non_desktop_effective;
|
is_non_desktop = dd.non_desktop_effective;
|
||||||
is_connected = dd.connection == ConnectorStatus::Connected;
|
is_connected = dd.connection == ConnectorStatus::Connected;
|
||||||
}
|
}
|
||||||
|
|
@ -1052,7 +1050,7 @@ impl MetalDeviceTransactionWithChange {
|
||||||
connector.obj.send_connected();
|
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() {
|
match connector.obj.frontend_state.get() {
|
||||||
FrontState::Removed
|
FrontState::Removed
|
||||||
| FrontState::Unavailable
|
| FrontState::Unavailable
|
||||||
|
|
|
||||||
|
|
@ -388,7 +388,8 @@ impl ConnectorDisplayData {
|
||||||
|
|
||||||
fn update_non_desktop_effective(&mut self) {
|
fn update_non_desktop_effective(&mut self) {
|
||||||
let state = &*self.persistent.state.borrow();
|
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) {
|
pub fn update_cached_fields(&mut self, dev: &MetalDrmDevice) {
|
||||||
|
|
@ -668,8 +669,8 @@ impl MetalConnector {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn connected(&self) -> bool {
|
fn connected(&self) -> bool {
|
||||||
let dd = self.display.borrow_mut();
|
let dd = self.display.borrow();
|
||||||
dd.persistent.state.borrow().enabled && dd.connection == ConnectorStatus::Connected
|
dd.connection == ConnectorStatus::Connected
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update_drm_feedback(&self) {
|
pub fn update_drm_feedback(&self) {
|
||||||
|
|
|
||||||
|
|
@ -853,10 +853,11 @@ impl Randr {
|
||||||
|
|
||||||
fn print_connector(&self, connector: &Connector, modes: bool, formats: bool) {
|
fn print_connector(&self, connector: &Connector, modes: bool, formats: bool) {
|
||||||
println!(" {}:", connector.name);
|
println!(" {}:", connector.name);
|
||||||
|
if !connector.enabled {
|
||||||
|
println!(" disabled");
|
||||||
|
}
|
||||||
let Some(o) = &connector.output else {
|
let Some(o) = &connector.output else {
|
||||||
if !connector.enabled {
|
if connector.enabled {
|
||||||
println!(" disabled");
|
|
||||||
} else {
|
|
||||||
println!(" disconnected");
|
println!(" disconnected");
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
@ -869,7 +870,9 @@ impl Randr {
|
||||||
o.width_mm, o.height_mm
|
o.width_mm, o.height_mm
|
||||||
);
|
);
|
||||||
if o.non_desktop {
|
if o.non_desktop {
|
||||||
println!(" non-desktop");
|
if connector.enabled {
|
||||||
|
println!(" non-desktop");
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
println!(" VRR capable: {}", o.vrr_capable);
|
println!(" VRR capable: {}", o.vrr_capable);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue