diff options
Diffstat (limited to 'drm/DrmDevice.h')
-rw-r--r-- | drm/DrmDevice.h | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/drm/DrmDevice.h b/drm/DrmDevice.h index f2530ee..4cf0132 100644 --- a/drm/DrmDevice.h +++ b/drm/DrmDevice.h @@ -31,18 +31,23 @@ namespace android { class DrmFbImporter; class DrmPlane; +class ResourceManager; class DrmDevice { public: - DrmDevice(); ~DrmDevice() = default; - auto Init(const char *path) -> int; + static auto CreateInstance(std::string const &path, ResourceManager *res_man) + -> std::unique_ptr<DrmDevice>; auto GetFd() const { return fd_.Get(); } + auto &GetResMan() { + return *res_man_; + } + auto GetConnectors() -> const std::vector<std::unique_ptr<DrmConnector>> &; auto GetPlanes() -> const std::vector<std::unique_ptr<DrmPlane>> &; auto GetCrtcs() -> const std::vector<std::unique_ptr<DrmCrtc>> &; @@ -69,8 +74,6 @@ class DrmDevice { return *drm_fb_importer_; } - static auto IsKMSDev(const char *path) -> bool; - auto FindCrtcById(uint32_t id) const -> DrmCrtc * { for (const auto &crtc : crtcs_) { if (crtc->GetId() == id) { @@ -95,6 +98,11 @@ class DrmDevice { DrmProperty *property) const; private: + explicit DrmDevice(ResourceManager *res_man); + auto Init(const char *path) -> int; + + static auto IsKMSDev(const char *path) -> bool; + UniqueFd fd_; std::vector<std::unique_ptr<DrmConnector>> connectors_; @@ -109,6 +117,8 @@ class DrmDevice { bool HasAddFb2ModifiersSupport_{}; std::unique_ptr<DrmFbImporter> drm_fb_importer_; + + ResourceManager *const res_man_; }; } // namespace android |