19 #ifndef MIR_GRAPHICS_COMMON_KMS_UTILS_DRM_MODE_RESOURCES_H_ 20 #define MIR_GRAPHICS_COMMON_KMS_UTILS_DRM_MODE_RESOURCES_H_ 23 #include <xf86drmMode.h> 27 #include <unordered_map> 36 typedef std::unique_ptr<drmModeCrtc,std::function<void(drmModeCrtc*)>>
DRMModeCrtcUPtr;
41 typedef std::unique_ptr<drmModePlane,std::function<void(drmModePlane*)>>
DRMModePlaneUPtr;
46 DRMModeEncoderUPtr
get_encoder(
int drm_fd, uint32_t
id);
47 DRMModeCrtcUPtr
get_crtc(
int drm_fd, uint32_t
id);
48 DRMModePlaneUPtr
get_plane(
int drm_fd, uint32_t
id);
55 template<
typename DRMUPtr, DRMUPtr(*)(
int, u
int32_t)>
60 public std::iterator<std::input_iterator_tag, DRMUPtr>
77 iterator(
int drm_fd, uint32_t* id_ptr);
81 DRMUPtr
mutable current;
92 uint32_t*
const begin_;
111 uint64_t operator[](
char const* name)
const;
112 uint32_t id_for(
char const* property_name)
const;
114 std::unordered_map<std::string, Prop>::const_iterator
begin()
const;
115 std::unordered_map<std::string, Prop>::const_iterator
end()
const;
118 std::unordered_map<std::string, Prop>
const properties_table;
129 DRMModePlaneResUPtr
const resources;
137 void for_each_connector(std::function<
void(DRMModeConnectorUPtr)>
const& f)
const;
139 void for_each_encoder(std::function<
void(DRMModeEncoderUPtr)>
const& f)
const;
141 void for_each_crtc(std::function<
void(DRMModeCrtcUPtr)>
const& f)
const;
143 size_t num_connectors()
const;
145 size_t num_encoders()
const;
147 size_t num_crtcs()
const;
149 DRMModeConnectorUPtr connector(uint32_t
id)
const;
150 DRMModeEncoderUPtr encoder(uint32_t
id)
const;
151 DRMModeCrtcUPtr crtc(uint32_t
id)
const;
159 DRMModeResUPtr
const resources;
All things Mir.
Definition: atomic_callback.h:25
DRMUPtr & operator*() const
Definition: drm_mode_resources.h:59
friend class ObjectCollection
Definition: drm_mode_resources.h:76
std::unique_ptr< drmModePlane, std::function< void(drmModePlane *)> > DRMModePlaneUPtr
Definition: drm_mode_resources.h:41
DRMModePlaneUPtr get_plane(int drm_fd, uint32_t id)
DRMModeEncoderUPtr get_encoder(int drm_fd, uint32_t id)
uint32_t id
Definition: drm_mode_resources.h:102
std::unique_ptr< drmModeObjectProperties, void(*)(drmModeObjectProperties *)> DRMModeObjectPropsUPtr
Definition: drm_mode_resources.h:42
std::unique_ptr< drmModeConnector, std::function< void(drmModeConnector *)> > DRMModeConnectorUPtr
Definition: drm_mode_resources.h:38
Definition: drm_mode_resources.h:132
std::unique_ptr< drmModePropertyRes, void(*)(drmModePropertyPtr)> DRMModePropertyUPtr
Definition: drm_mode_resources.h:43
Definition: drm_mode_resources.h:100
std::unique_ptr< drmModeCrtc, std::function< void(drmModeCrtc *)> > DRMModeCrtcUPtr
Definition: drm_mode_resources.h:36
DRMUPtr * operator->() const
Definition: drm_mode_resources.h:121
bool operator!=(iterator const &rhs) const
iterator(iterator const &from)
Definition: drm_mode_resources.h:56
DRMModeCrtcUPtr get_crtc(int drm_fd, uint32_t id)
bool operator==(iterator const &rhs) const
Definition: drm_mode_resources.h:97
iterator & operator=(iterator const &rhs)
uint64_t value
Definition: drm_mode_resources.h:103
DRMModeConnectorUPtr get_connector(int drm_fd, uint32_t id)
std::unique_ptr< drmModePlaneRes, void(*)(drmModePlaneRes *)> DRMModePlaneResUPtr
Definition: drm_mode_resources.h:40
std::unique_ptr< drmModeRes, void(*)(drmModeRes *)> DRMModeResUPtr
Definition: drm_mode_resources.h:39
std::unique_ptr< drmModeEncoder, std::function< void(drmModeEncoder *)> > DRMModeEncoderUPtr
Definition: drm_mode_resources.h:37