fix: internal laptop screen stuck on vendor logo with external monitor
This commit is contained in:
parent
dacdc3db39
commit
a9f2427c00
2 changed files with 85 additions and 35 deletions
|
|
@ -852,11 +852,26 @@ impl KmsGuard<'_> {
|
|||
|
||||
// first drop old surfaces
|
||||
if !test_only {
|
||||
for output in outputs.iter().filter(|o| !o.is_enabled()) {
|
||||
device
|
||||
.inner
|
||||
.surfaces
|
||||
.retain(|_, surface| surface.output != *output);
|
||||
let mut disabled_crtcs = Vec::new();
|
||||
device.inner.surfaces.retain(|crtc, surface| {
|
||||
if outputs
|
||||
.iter()
|
||||
.any(|o| !o.is_enabled() && surface.output == *o)
|
||||
{
|
||||
disabled_crtcs.push(*crtc);
|
||||
false
|
||||
} else {
|
||||
true
|
||||
}
|
||||
});
|
||||
|
||||
let supports_atomic = device.drm.device().is_atomic();
|
||||
if let Err(err) = drm_helpers::disable_crtcs(
|
||||
device.drm.device_mut(),
|
||||
supports_atomic,
|
||||
&disabled_crtcs,
|
||||
) {
|
||||
warn!("Failed to disable crtcs for disabled outputs: {err}");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue