diff --git a/plugins/platforms/drm/drm_output.h b/plugins/platforms/drm/drm_output.h --- a/plugins/platforms/drm/drm_output.h +++ b/plugins/platforms/drm/drm_output.h @@ -59,6 +59,7 @@ Q_OBJECT public: struct Edid { + QByteArray raw; QByteArray eisaId; QByteArray monitorName; QByteArray serialNumber; diff --git a/plugins/platforms/drm/drm_output.cpp b/plugins/platforms/drm/drm_output.cpp --- a/plugins/platforms/drm/drm_output.cpp +++ b/plugins/platforms/drm/drm_output.cpp @@ -384,6 +384,10 @@ m_waylandOutputDevice = waylandServer()->display()->createOutputDevice(); m_waylandOutputDevice->setUuid(m_uuid); + if (!m_edid.raw.isEmpty()) { + m_waylandOutputDevice->setEdid(m_edid.raw); + } + if (!m_edid.eisaId.isEmpty()) { m_waylandOutputDevice->setManufacturer(QString::fromLatin1(m_edid.eisaId)); } else { @@ -605,6 +609,7 @@ if (!verifyEdidHeader(edid.data())) { return; } + m_edid.raw = QByteArray(reinterpret_cast(edid.data()->data), edid.data()->length); m_edid.eisaId = extractEisaId(edid.data()); m_edid.serialNumber = extractSerialNumber(edid.data());