diff --git a/libkms++/encoder.cpp b/libkms++/encoder.cpp
index 081177b351c0b3be6d787ec199fae9dd7b2f9c3f..6f79e4fba6446b1db1382ed77dc4daf17dacd10b 100644 (file)
--- a/libkms++/encoder.cpp
+++ b/libkms++/encoder.cpp
drmModeEncoderPtr drm_encoder;
};
+static const map<int, string> encoder_types = {
+#define DEF_ENC(c) { DRM_MODE_ENCODER_##c, #c }
+ DEF_ENC(NONE),
+ DEF_ENC(DAC),
+ DEF_ENC(TMDS),
+ DEF_ENC(LVDS),
+ DEF_ENC(TVDAC),
+ DEF_ENC(VIRTUAL),
+ DEF_ENC(DSI),
+#undef DEF_ENC
+};
+
Encoder::Encoder(Card &card, uint32_t id)
:DrmObject(card, id, DRM_MODE_OBJECT_ENCODER)
{
Crtc* Encoder::get_crtc() const
{
- return card().get_crtc(m_priv->drm_encoder->crtc_id);
+ if (m_priv->drm_encoder->crtc_id)
+ return card().get_crtc(m_priv->drm_encoder->crtc_id);
+ else
+ return 0;
}
vector<Crtc*> Encoder::get_possible_crtcs() const
return crtcs;
}
+
+const string& Encoder::get_encoder_type() const
+{
+ return encoder_types.at(m_priv->drm_encoder->encoder_type);
+}
+
}