Snap for 9376496 from 85245b2282243ae54cd1273a221f3df112d5c890 to tm-d2-release

Change-Id: Idda2b593556c5501907a62e62addee78bdb0d422
diff --git a/histogram/histogram.h b/histogram/histogram.h
index ff981bf..a7b41ce 100644
--- a/histogram/histogram.h
+++ b/histogram/histogram.h
@@ -28,8 +28,14 @@
  public:
   IDLHistogram() : HistogramInfo(HistogramType::HISTOGRAM_HIDL) {}
   virtual ~IDLHistogram() {}
-  virtual void setHistogramPos(HistogramPos pos) { mHistogramPos = pos; }
-  HistogramPos getHistogramPos() { return mHistogramPos; }
+  virtual void setHistogramPos(HistogramPos pos) {
+      std::unique_lock<std::mutex> lk(mSetHistInfoMutex);
+      mHistogramPos = pos;
+  }
+  HistogramPos getHistogramPos() {
+      std::unique_lock<std::mutex> lk(mSetHistInfoMutex);
+      return mHistogramPos;
+  }
 
  private:
   HistogramPos mHistogramPos = HistogramPos::POST;
diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
index 6e9cd7b..817377a 100644
--- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
+++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
@@ -196,8 +196,7 @@
 
 int32_t ExynosDisplayDrmInterfaceModule::setDisplayHistogramSetting(
     ExynosDisplayDrmInterface::DrmModeAtomicReq &drmReq) {
-  if ((mHistogramInfoRegistered == false) || (isPrimary() == false))
-    return NO_ERROR;
+  if ((isHistogramInfoRegistered() == false) || (isPrimary() == false)) return NO_ERROR;
 
   int32_t ret =
       gs101::ExynosDisplayDrmInterfaceModule::setDisplayHistogramSetting(
@@ -210,9 +209,9 @@
 }
 
 void ExynosDisplayDrmInterfaceModule::registerHistogramInfo(
-    IDLHistogram *info) {
+        const std::shared_ptr<IDLHistogram> &info) {
   gs101::ExynosDisplayDrmInterfaceModule::registerHistogramInfo(info);
-  mHistogramInfo.reset(info);
+  mHistogramInfo = info;
 }
 
 //////////////////////////////////////////////////// ExynosPrimaryDisplayDrmInterfaceModule //////////////////////////////////////////////////////////////////
diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h
index a341f39..5060c8c 100644
--- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h
+++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h
@@ -40,7 +40,7 @@
         /* For Histogram */
         virtual int32_t setDisplayHistogramSetting(
             ExynosDisplayDrmInterface::DrmModeAtomicReq &drmReq) override;
-        virtual void registerHistogramInfo(IDLHistogram *info) override;
+        virtual void registerHistogramInfo(const std::shared_ptr<IDLHistogram> &info) override;
 
     private:
         int32_t createCgcDMAFromIDqe(const IDisplayColorGS101::IDqe::CgcData &cgcData);