diff --git a/plugins/platforms/drm/drm_output.cpp b/plugins/platforms/drm/drm_output.cpp index a74371ba5b..b1655a12f7 100644 --- a/plugins/platforms/drm/drm_output.cpp +++ b/plugins/platforms/drm/drm_output.cpp @@ -252,8 +252,6 @@ bool DrmOutput::init(drmModeConnector *connector) if (!initPrimaryPlane()) { return false; } - } else if (!m_crtc->blank()) { - return false; } setInternal(connector->connector_type == DRM_MODE_CONNECTOR_LVDS || connector->connector_type == DRM_MODE_CONNECTOR_eDP); @@ -268,6 +266,12 @@ bool DrmOutput::init(drmModeConnector *connector) } initOutputDevice(connector); + + if (!m_backend->atomicModeSetting() && !m_crtc->blank()) { + // We use legacy mode and the initial output blank failed. + return false; + } + updateDpms(KWayland::Server::OutputInterface::DpmsMode::On); return true; } @@ -745,8 +749,10 @@ void DrmOutput::setWaylandMode() void DrmOutput::pageFlipped() { - Q_ASSERT(m_pageFlipPending); + // In legacy mode we might get a page flip through a blank. + Q_ASSERT(m_pageFlipPending || !m_backend->atomicModeSetting()); m_pageFlipPending = false; + if (m_deleted) { deleteLater(); return;