e692dac40633cd389763a274110111e289f5c9fb
[android/external-libkmsxx.git] / libkms++ / card.h
1 #pragma once
3 #include <cstdint>
4 #include <vector>
5 #include <map>
7 #include "decls.h"
8 #include "pipeline.h"
10 namespace kms
11 {
12 class Card
13 {
14 public:
15         Card();
16         ~Card();
18         Card(const Card& other) = delete;
19         Card& operator=(const Card& other) = delete;
21         int fd() const { return m_fd; }
23         Connector* get_first_connected_connector() const;
25         DrmObject* get_object(uint32_t id) const;
26         Crtc* get_crtc(uint32_t id) const;
27         Crtc* get_crtc_by_index(uint32_t idx) const;
28         Encoder* get_encoder(uint32_t id) const;
29         Property* get_prop(uint32_t id) const;
30         Property* get_prop(const std::string& name) const;
32         bool master() const { return m_master; }
33         bool has_atomic() const { return m_has_atomic; }
34         bool has_has_universal_planes() const { return m_has_universal_planes; }
36         void print_short() const;
38         std::vector<Connector*> get_connectors() const;
39         std::vector<DrmObject*> get_objects() const;
40         std::vector<Plane*> get_planes() const;
42         std::vector<Pipeline> get_connected_pipelines();
44         void call_page_flip_handlers();
46 private:
47         void restore_modes();
49         std::map<uint32_t, DrmObject*> m_obmap;
51         int m_fd;
52         bool m_master;
54         bool m_has_atomic;
55         bool m_has_universal_planes;
56 };
57 }