From kde-commits Tue Nov 15 15:05:48 2016 From: Marco Martin Date: Tue, 15 Nov 2016 15:05:48 +0000 To: kde-commits Subject: [kwin] plugins/platforms/drm: add connector name to screen model Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=147922235828855 Git commit c304c0a69cc0b94fcf89ba707d220503266a1ab6 by Marco Martin. Committed on 15/11/2016 at 15:05. Pushed by mart into branch 'master'. add connector name to screen model Summary: to uniquely identify screens (in QScreen::name()) add the conenctor name and id (such as HDMI-A-1) to the model identification Test Plan: tested a full plasma session Reviewers: #plasma, graesslin Reviewed By: #plasma, graesslin Subscribers: graesslin, plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D3341 M +30 -4 plugins/platforms/drm/drm_output.cpp http://commits.kde.org/kwin/c304c0a69cc0b94fcf89ba707d220503266a1ab6 diff --git a/plugins/platforms/drm/drm_output.cpp b/plugins/platforms/drm/d= rm_output.cpp index abcdc4d..0e93bc6 100644 --- a/plugins/platforms/drm/drm_output.cpp +++ b/plugins/platforms/drm/drm_output.cpp @@ -138,6 +138,27 @@ static DrmOutput::DpmsMode fromWaylandDpmsMode(KWaylan= d::Server::OutputInterface } } = +static QHash s_connectorNames =3D { + {DRM_MODE_CONNECTOR_Unknown, QByteArrayLiteral("Unknown")}, + {DRM_MODE_CONNECTOR_VGA, QByteArrayLiteral("VGA")}, + {DRM_MODE_CONNECTOR_DVII, QByteArrayLiteral("DVI-I")}, + {DRM_MODE_CONNECTOR_DVID, QByteArrayLiteral("DVI-D")}, + {DRM_MODE_CONNECTOR_DVIA, QByteArrayLiteral("DVI-A")}, + {DRM_MODE_CONNECTOR_Composite, QByteArrayLiteral("Composite")}, + {DRM_MODE_CONNECTOR_SVIDEO, QByteArrayLiteral("SVIDEO")}, + {DRM_MODE_CONNECTOR_LVDS, QByteArrayLiteral("LVDS")}, + {DRM_MODE_CONNECTOR_Component, QByteArrayLiteral("Component")}, + {DRM_MODE_CONNECTOR_9PinDIN, QByteArrayLiteral("DIN")}, + {DRM_MODE_CONNECTOR_DisplayPort, QByteArrayLiteral("DP")}, + {DRM_MODE_CONNECTOR_HDMIA, QByteArrayLiteral("HDMI-A")}, + {DRM_MODE_CONNECTOR_HDMIB, QByteArrayLiteral("HDMI-B")}, + {DRM_MODE_CONNECTOR_TV, QByteArrayLiteral("TV")}, + {DRM_MODE_CONNECTOR_eDP, QByteArrayLiteral("eDP")}, + {DRM_MODE_CONNECTOR_VIRTUAL, QByteArrayLiteral("Virtual")}, + {DRM_MODE_CONNECTOR_DSI, QByteArrayLiteral("DSI")} +}; + + bool DrmOutput::init(drmModeConnector *connector) { initEdid(connector); @@ -172,20 +193,25 @@ bool DrmOutput::init(drmModeConnector *connector) } m_waylandOutputDevice->setManufacturer(m_waylandOutput->manufacturer()= ); = + QString connectorName =3D s_connectorNames.value(connector->connector_= type, QByteArrayLiteral("Unknown")); + QString modelName; + if (!m_edid.monitorName.isEmpty()) { QString model =3D QString::fromLatin1(m_edid.monitorName); if (!m_edid.serialNumber.isEmpty()) { model.append('/'); model.append(QString::fromLatin1(m_edid.serialNumber)); } - m_waylandOutput->setModel(model); + modelName =3D model; } else if (!m_edid.serialNumber.isEmpty()) { - m_waylandOutput->setModel(QString::fromLatin1(m_edid.serialNumber)= ); + modelName =3D QString::fromLatin1(m_edid.serialNumber); } else { - m_waylandOutput->setModel(i18n("unknown")); + modelName =3D i18n("unknown"); } - m_waylandOutputDevice->setModel(m_waylandOutput->model()); = + m_waylandOutput->setModel(connectorName + QStringLiteral("-") + QStrin= g::number(connector->connector_type_id) + QStringLiteral("-") + modelName); + m_waylandOutputDevice->setModel(m_waylandOutput->model()); + = QSize physicalSize =3D !m_edid.physicalSize.isEmpty() ? m_edid.physica= lSize : QSize(connector->mmWidth, connector->mmHeight); // the size might be completely borked. E.g. Samsung SyncMaster 2494HS= reports 160x90 while in truth it's 520x292 // as this information is used to calculate DPI info, it's going to re= sult in everything being huge