diff --git a/libkms++/connector.cpp b/libkms++/connector.cpp
index 8ff5a5f8f4a264661084ce22289c37d3f54b6b02..d00f3c756c8a50fc196fdb2ec221adc584ae44db 100644 (file)
--- a/libkms++/connector.cpp
+++ b/libkms++/connector.cpp
void Connector::setup()
{
- if (m_priv->drm_connector->encoder_id != 0) {
- auto enc = card().get_encoder(m_priv->drm_connector->encoder_id);
- if (enc)
- m_current_crtc = enc->get_crtc();
- }
+ if (m_priv->drm_connector->encoder_id != 0)
+ m_current_encoder = card().get_encoder(m_priv->drm_connector->encoder_id);
+ else
+ m_current_encoder = 0;
+
+ if (m_current_encoder)
+ m_saved_crtc = m_current_encoder->get_crtc();
+ else
+ m_saved_crtc = 0;
+}
+
+void Connector::restore_mode()
+{
+ if (m_saved_crtc)
+ m_saved_crtc->restore_mode(this);
}
void Connector::print_short() const
return crtcs;
}
+
+Crtc* Connector::get_current_crtc() const
+{
+ if (m_current_encoder)
+ return m_current_encoder->get_crtc();
+ else
+ return 0;
+}
+
}