drm_hwcomposer: Allow accessing ResourceManager from DrmDevce
This is useful for accessing the main lock from drm / compositor
related code blocks.
Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
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 @@
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 @@
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 @@
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 @@
bool HasAddFb2ModifiersSupport_{};
std::unique_ptr<DrmFbImporter> drm_fb_importer_;
+
+ ResourceManager *const res_man_;
};
} // namespace android