diff --git a/plugins/platforms/drm/drm_backend.h b/plugins/platforms/drm/drm_backend.h --- a/plugins/platforms/drm/drm_backend.h +++ b/plugins/platforms/drm/drm_backend.h @@ -158,7 +158,7 @@ void updateCursor(); void moveCursor(); void initCursor(); - void outputDpmsChanged(); + void updateOutputsEnabled(); void readOutputsConfiguration(); QByteArray generateOutputConfigurationUuid() const; DrmOutput *findOutput(quint32 connector); diff --git a/plugins/platforms/drm/drm_backend.cpp b/plugins/platforms/drm/drm_backend.cpp --- a/plugins/platforms/drm/drm_backend.cpp +++ b/plugins/platforms/drm/drm_backend.cpp @@ -461,7 +461,7 @@ output->m_conn = con; crtc->setOutput(output); output->m_crtc = crtc; - connect(output, &DrmOutput::dpmsChanged, this, &DrmBackend::outputDpmsChanged); + connect(output, &DrmOutput::dpmsChanged, this, &DrmBackend::updateOutputsEnabled); if (modeCrtc->mode_valid) { output->m_mode = modeCrtc->mode; @@ -497,6 +497,7 @@ if (!m_outputs.isEmpty()) { emit screensQueried(); } + updateOutputsEnabled(); } void DrmBackend::readOutputsConfiguration() @@ -581,6 +582,7 @@ emit screens()->changed(); } config->setApplied(); + updateOutputsEnabled(); } DrmOutput *DrmBackend::findOutput(quint32 connector) @@ -755,11 +757,8 @@ } #endif -void DrmBackend::outputDpmsChanged() +void DrmBackend::updateOutputsEnabled() { - if (m_enabledOutputs.isEmpty()) { - return; - } bool enabled = false; for (auto it = m_enabledOutputs.constBegin(); it != m_enabledOutputs.constEnd(); ++it) { enabled = enabled || (*it)->isDpmsEnabled();