drm_hwcomposer: Pass resource manager to drmdisplaycompositor

Signed-off-by: Alexandru Gheorghe <alexandru-cosmin.gheorghe@arm.com>
diff --git a/drmdisplaycompositor.cpp b/drmdisplaycompositor.cpp
index 4291ad1..0d00bc0 100644
--- a/drmdisplaycompositor.cpp
+++ b/drmdisplaycompositor.cpp
@@ -39,7 +39,8 @@
 namespace android {
 
 DrmDisplayCompositor::DrmDisplayCompositor()
-    : drm_(NULL),
+    : resource_manager_(NULL),
+      drm_(NULL),
       display_(-1),
       initialized_(false),
       active_(false),
@@ -74,7 +75,9 @@
   pthread_mutex_destroy(&lock_);
 }
 
-int DrmDisplayCompositor::Init(DrmDevice *drm, int display) {
+int DrmDisplayCompositor::Init(ResourceManager *resource_manager,
+                               DrmDevice *drm, int display) {
+  resource_manager_ = resource_manager;
   drm_ = drm;
   display_ = display;
 
diff --git a/drmdisplaycompositor.h b/drmdisplaycompositor.h
index 1866d43..6212597 100644
--- a/drmdisplaycompositor.h
+++ b/drmdisplaycompositor.h
@@ -20,6 +20,7 @@
 #include "drmhwcomposer.h"
 #include "drmdisplaycomposition.h"
 #include "drmframebuffer.h"
+#include "resourcemanager.h"
 
 #include <pthread.h>
 #include <memory>
@@ -40,7 +41,7 @@
   DrmDisplayCompositor();
   ~DrmDisplayCompositor();
 
-  int Init(DrmDevice *drm, int display);
+  int Init(ResourceManager *resource_manager, DrmDevice *drm, int display);
 
   std::unique_ptr<DrmDisplayComposition> CreateComposition() const;
   int ApplyComposition(std::unique_ptr<DrmDisplayComposition> composition);
@@ -78,6 +79,7 @@
 
   std::tuple<int, uint32_t> CreateModeBlob(const DrmMode &mode);
 
+  ResourceManager *resource_manager_;
   DrmDevice *drm_;
   int display_;
 
diff --git a/drmhwctwo.cpp b/drmhwctwo.cpp
index 56ba07b..a6b48e2 100644
--- a/drmhwctwo.cpp
+++ b/drmhwctwo.cpp
@@ -72,10 +72,10 @@
     return HWC2::Error::NoResources;
   }
 
-  displays_.emplace(std::piecewise_construct,
-                    std::forward_as_tuple(HWC_DISPLAY_PRIMARY),
-                    std::forward_as_tuple(drm, importer, HWC_DISPLAY_PRIMARY,
-                                          HWC2::DisplayType::Physical));
+  displays_.emplace(
+      std::piecewise_construct, std::forward_as_tuple(HWC_DISPLAY_PRIMARY),
+      std::forward_as_tuple(&resource_manager_, drm, importer,
+                            HWC_DISPLAY_PRIMARY, HWC2::DisplayType::Physical));
 
   DrmCrtc *crtc = drm->GetCrtcForDisplay(static_cast<int>(HWC_DISPLAY_PRIMARY));
   if (!crtc) {
@@ -152,10 +152,15 @@
   return HWC2::Error::None;
 }
 
-DrmHwcTwo::HwcDisplay::HwcDisplay(DrmDevice *drm,
+DrmHwcTwo::HwcDisplay::HwcDisplay(ResourceManager *resource_manager,
+                                  DrmDevice *drm,
                                   std::shared_ptr<Importer> importer,
                                   hwc2_display_t handle, HWC2::DisplayType type)
-    : drm_(drm), importer_(importer), handle_(handle), type_(type) {
+    : resource_manager_(resource_manager),
+      drm_(drm),
+      importer_(importer),
+      handle_(handle),
+      type_(type) {
   supported(__func__);
 }
 
@@ -168,7 +173,7 @@
   }
 
   int display = static_cast<int>(handle_);
-  int ret = compositor_.Init(drm_, display);
+  int ret = compositor_.Init(resource_manager_, drm_, display);
   if (ret) {
     ALOGE("Failed display compositor init for display %d (%d)", display, ret);
     return HWC2::Error::NoResources;
diff --git a/drmhwctwo.h b/drmhwctwo.h
index b65d37d..d987065 100644
--- a/drmhwctwo.h
+++ b/drmhwctwo.h
@@ -135,8 +135,9 @@
 
   class HwcDisplay {
    public:
-    HwcDisplay(DrmDevice *drm, std::shared_ptr<Importer> importer,
-               hwc2_display_t handle, HWC2::DisplayType type);
+    HwcDisplay(ResourceManager *resource_manager, DrmDevice *drm,
+               std::shared_ptr<Importer> importer, hwc2_display_t handle,
+               HWC2::DisplayType type);
     HwcDisplay(const HwcDisplay &) = delete;
     HWC2::Error Init(std::vector<DrmPlane *> *planes);
 
@@ -188,6 +189,7 @@
     HWC2::Error CreateComposition(bool test);
     void AddFenceToRetireFence(int fd);
 
+    ResourceManager *resource_manager_;
     DrmDevice *drm_;
     DrmDisplayCompositor compositor_;
     std::shared_ptr<Importer> importer_;