drm_hwcomposer: Use shared pointer type for the pipeline_ variable

The change will help with resource management in further patches.

Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
diff --git a/drm/ResourceManager.cpp b/drm/ResourceManager.cpp
index 577d86c..634ccb7 100644
--- a/drm/ResourceManager.cpp
+++ b/drm/ResourceManager.cpp
@@ -137,14 +137,16 @@
             conn->GetName().c_str());
 
       if (connected) {
-        auto pipeline = DrmDisplayPipeline::CreatePipeline(*conn);
+        std::shared_ptr<DrmDisplayPipeline>
+            pipeline = DrmDisplayPipeline::CreatePipeline(*conn);
+
         if (pipeline) {
-          frontend_interface_->BindDisplay(pipeline.get());
+          frontend_interface_->BindDisplay(pipeline);
           attached_pipelines_[conn] = std::move(pipeline);
         }
       } else {
         auto &pipeline = attached_pipelines_[conn];
-        frontend_interface_->UnbindDisplay(pipeline.get());
+        frontend_interface_->UnbindDisplay(pipeline);
         attached_pipelines_.erase(conn);
       }
     }
@@ -154,7 +156,7 @@
 
 void ResourceManager::DetachAllFrontendDisplays() {
   for (auto &p : attached_pipelines_) {
-    frontend_interface_->UnbindDisplay(p.second.get());
+    frontend_interface_->UnbindDisplay(p.second);
   }
   attached_pipelines_.clear();
   frontend_interface_->FinalizeDisplayBinding();
diff --git a/drm/ResourceManager.h b/drm/ResourceManager.h
index 7fa3fc6..72ee3e2 100644
--- a/drm/ResourceManager.h
+++ b/drm/ResourceManager.h
@@ -34,8 +34,8 @@
 class PipelineToFrontendBindingInterface {
  public:
   virtual ~PipelineToFrontendBindingInterface() = default;
-  virtual bool BindDisplay(DrmDisplayPipeline *);
-  virtual bool UnbindDisplay(DrmDisplayPipeline *);
+  virtual bool BindDisplay(std::shared_ptr<DrmDisplayPipeline>);
+  virtual bool UnbindDisplay(std::shared_ptr<DrmDisplayPipeline>);
   virtual void FinalizeDisplayBinding();
 };
 
@@ -82,7 +82,7 @@
 
   std::recursive_mutex main_lock_;
 
-  std::map<DrmConnector *, std::unique_ptr<DrmDisplayPipeline>>
+  std::map<DrmConnector *, std::shared_ptr<DrmDisplayPipeline>>
       attached_pipelines_;
 
   PipelineToFrontendBindingInterface *const frontend_interface_;
diff --git a/drm/VSyncWorker.cpp b/drm/VSyncWorker.cpp
index 8a251c7..10d48e3 100644
--- a/drm/VSyncWorker.cpp
+++ b/drm/VSyncWorker.cpp
@@ -30,14 +30,14 @@
 
 namespace android {
 
-auto VSyncWorker::CreateInstance(DrmDisplayPipeline *pipe,
+auto VSyncWorker::CreateInstance(std::shared_ptr<DrmDisplayPipeline> &pipe,
                                  VSyncWorkerCallbacks &callbacks)
     -> std::shared_ptr<VSyncWorker> {
   auto vsw = std::shared_ptr<VSyncWorker>(new VSyncWorker());
 
   vsw->callbacks_ = callbacks;
 
-  if (pipe != nullptr) {
+  if (pipe) {
     vsw->high_crtc_ = pipe->crtc->Get()->GetIndexInResArray()
                       << DRM_VBLANK_HIGH_CRTC_SHIFT;
     vsw->drm_fd_ = pipe->device->GetFd();
diff --git a/drm/VSyncWorker.h b/drm/VSyncWorker.h
index 031a561..2a4c7c8 100644
--- a/drm/VSyncWorker.h
+++ b/drm/VSyncWorker.h
@@ -35,7 +35,7 @@
  public:
   ~VSyncWorker() = default;
 
-  auto static CreateInstance(DrmDisplayPipeline *pipe,
+  auto static CreateInstance(std::shared_ptr<DrmDisplayPipeline> &pipe,
                              VSyncWorkerCallbacks &callbacks)
       -> std::shared_ptr<VSyncWorker>;