From 658457df5f832b593ec9d1c399a5e29a2e9f4ef8 Mon Sep 17 00:00:00 2001 From: Xaver Hugl Date: Sun, 27 Mar 2022 16:44:45 +0200 Subject: [PATCH] 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 --- src/backends/drm/drm_output.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/backends/drm/drm_output.cpp b/src/backends/drm/drm_output.cpp index ef0233a38c..5a9243a662 100644 --- a/src/backends/drm/drm_output.cpp +++ b/src/backends/drm/drm_output.cpp @@ -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);