summaryrefslogtreecommitdiff
path: root/kms++/src/connector.cpp
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2017-01-25 13:19:44 +0200
committerTomi Valkeinen <tomi.valkeinen@ti.com>2017-01-25 13:20:20 +0200
commit526c26ceec669e4b317f9dc7dc1270ca8a3b4478 (patch)
treee2ab0497eaf649792f1e1bc2f7d482e6719f251d /kms++/src/connector.cpp
parent8e93fa0bb51744cb3c33ce7308c204caa68e40f8 (diff)
Add refresh() to connector, crtc and encoder
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'kms++/src/connector.cpp')
-rw-r--r--kms++/src/connector.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/kms++/src/connector.cpp b/kms++/src/connector.cpp
index 7c6c179..48c5815 100644
--- a/kms++/src/connector.cpp
+++ b/kms++/src/connector.cpp
@@ -73,13 +73,27 @@ Connector::Connector(Card &card, uint32_t id, uint32_t idx)
m_fullname = name + "-" + to_string(m_priv->drm_connector->connector_type_id);
}
-
Connector::~Connector()
{
drmModeFreeConnector(m_priv->drm_connector);
delete m_priv;
}
+void Connector::refresh()
+{
+ drmModeFreeConnector(m_priv->drm_connector);
+
+ m_priv->drm_connector = drmModeGetConnector(this->card().fd(), this->id());
+ assert(m_priv->drm_connector);
+
+ // XXX drmModeGetConnector() does forced probe, which seems to change (at least) EDID blob id.
+ // XXX So refresh the props again here.
+ refresh_props();
+
+ const auto& name = connector_names.at(m_priv->drm_connector->connector_type);
+ m_fullname = name + "-" + to_string(m_priv->drm_connector->connector_type_id);
+}
+
void Connector::setup()
{
if (m_priv->drm_connector->encoder_id != 0)