backends/drm: attempt a modeset on output disabling

When modesets are necessary, they are attempted when an output on the given
GPU gets presented. With multi-gpu setups however, the situation can arise
where there is only one disabled output on a GPU; in that case KWin eternally
waits and never properly turns off the display.
In order to work around this, explicitly call DrmGpu::maybeModeset when
an output gets disabled.

BUG: 449878
FIXED-IN: 5.24.4
This commit is contained in:
Xaver Hugl 2022-03-27 16:44:45 +02:00
parent 5427b4d4da
commit 658457df5f

View file

@ -394,6 +394,9 @@ void DrmOutput::applyQueuedChanges(const WaylandOutputConfig &config)
auto props = config.constChangeSet(this);
setEnabled(props->enabled && m_pipeline->pending.crtc);
if (!isEnabled() && m_pipeline->needsModeset()) {
m_gpu->maybeModeset();
}
moveTo(props->pos);
setScale(props->scale);
setTransformInternal(props->transform);