summaryrefslogtreecommitdiff
path: root/kms++/inc/kms++/connector.h
diff options
context:
space:
mode:
Diffstat (limited to 'kms++/inc/kms++/connector.h')
-rw-r--r--kms++/inc/kms++/connector.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/kms++/inc/kms++/connector.h b/kms++/inc/kms++/connector.h
new file mode 100644
index 0000000..6ccc959
--- /dev/null
+++ b/kms++/inc/kms++/connector.h
@@ -0,0 +1,51 @@
+#pragma once
+
+#include <vector>
+
+#include "drmpropobject.h"
+#include "videomode.h"
+
+namespace kms
+{
+
+struct ConnectorPriv;
+
+class Connector : public DrmPropObject
+{
+ friend class Card;
+public:
+ Videomode get_default_mode() const;
+
+ Videomode get_mode(const std::string& mode) const;
+ Videomode get_mode(unsigned xres, unsigned yres, unsigned refresh, bool ilace) const;
+
+ Crtc* get_current_crtc() const;
+ std::vector<Crtc*> get_possible_crtcs() const;
+
+ bool connected() const;
+
+ const std::string& fullname() const { return m_fullname; }
+ uint32_t connector_type() const;
+ uint32_t connector_type_id() const;
+ uint32_t mmWidth() const;
+ uint32_t mmHeight() const;
+ uint32_t subpixel() const;
+ const std::string& subpixel_str() const;
+ std::vector<Videomode> get_modes() const;
+ std::vector<Encoder*> get_encoders() const;
+private:
+ Connector(Card& card, uint32_t id, uint32_t idx);
+ ~Connector();
+
+ void setup();
+ void restore_mode();
+
+ ConnectorPriv* m_priv;
+
+ std::string m_fullname;
+
+ Encoder* m_current_encoder;
+
+ Crtc* m_saved_crtc;
+};
+}