Merge "hwc2: validate display id in SetColorModeById"
diff --git a/gpu_tonemapper/Android.mk b/gpu_tonemapper/Android.mk
index 769d0ab..89bad79 100644
--- a/gpu_tonemapper/Android.mk
+++ b/gpu_tonemapper/Android.mk
@@ -4,6 +4,7 @@
 include $(CLEAR_VARS)
 LOCAL_COPY_HEADERS_TO     := $(common_header_export_path)
 LOCAL_COPY_HEADERS        := TonemapFactory.h Tonemapper.h
+LOCAL_VENDOR_MODULE       := true
 include $(BUILD_COPY_HEADERS)
 
 include $(CLEAR_VARS)
diff --git a/include/Android.mk b/include/Android.mk
index 6aacfb8..a72d5c3 100644
--- a/include/Android.mk
+++ b/include/Android.mk
@@ -2,6 +2,7 @@
 include $(LOCAL_PATH)/../common.mk
 include $(CLEAR_VARS)
 
+LOCAL_VENDOR_MODULE           := true
 LOCAL_COPY_HEADERS_TO         := $(common_header_export_path)
 LOCAL_COPY_HEADERS            := color_metadata.h
 
@@ -9,7 +10,8 @@
 
 include $(CLEAR_VARS)
 #TODO move all exported headers to this directory
-LOCAL_MODULE := display_headers
+LOCAL_MODULE                  := display_headers
+LOCAL_VENDOR_MODULE           := true
 LOCAL_EXPORT_C_INCLUDE_DIRS   := $(LOCAL_PATH) \
                                  $(display_top)/libcopybit \
                                  $(display_top)/libdrmutils \
diff --git a/libcopybit/Android.mk b/libcopybit/Android.mk
index a363b85..8396d51 100644
--- a/libcopybit/Android.mk
+++ b/libcopybit/Android.mk
@@ -16,6 +16,7 @@
 include $(LOCAL_PATH)/../common.mk
 include $(CLEAR_VARS)
 
+LOCAL_VENDOR_MODULE           := true
 LOCAL_COPY_HEADERS_TO         := $(common_header_export_path)
 LOCAL_COPY_HEADERS            := copybit.h copybit_priv.h c2d2.h
 #Copy the headers regardless of whether copybit is built
diff --git a/libqdutils/Android.mk b/libqdutils/Android.mk
index 60efb3a..5dac581 100644
--- a/libqdutils/Android.mk
+++ b/libqdutils/Android.mk
@@ -8,6 +8,7 @@
 LOCAL_SHARED_LIBRARIES        := $(common_libs) libbinder libqservice
 LOCAL_C_INCLUDES              := $(common_includes) $(kernel_includes)
 LOCAL_HEADER_LIBRARIES        := display_headers
+LOCAL_HEADER_LIBRARIES        += libhardware_headers
 LOCAL_CFLAGS                  := $(common_flags) -DLOG_TAG=\"qdutils\" -Wno-sign-conversion
 LOCAL_ADDITIONAL_DEPENDENCIES := $(common_deps)
 LOCAL_COPY_HEADERS_TO         := $(common_header_export_path)
diff --git a/sdm/libs/core/Android.mk b/sdm/libs/core/Android.mk
index cf3543c..bb3b71d 100644
--- a/sdm/libs/core/Android.mk
+++ b/sdm/libs/core/Android.mk
@@ -60,6 +60,7 @@
 
 SDM_HEADER_PATH := ../../include
 include $(CLEAR_VARS)
+LOCAL_VENDOR_MODULE           := true
 LOCAL_COPY_HEADERS_TO         := $(common_header_export_path)/sdm/core
 LOCAL_COPY_HEADERS             = $(SDM_HEADER_PATH)/core/buffer_allocator.h \
                                  $(SDM_HEADER_PATH)/core/buffer_sync_handler.h \
@@ -74,6 +75,7 @@
 include $(BUILD_COPY_HEADERS)
 
 include $(CLEAR_VARS)
+LOCAL_VENDOR_MODULE           := true
 LOCAL_COPY_HEADERS_TO         := $(common_header_export_path)/sdm/private
 LOCAL_COPY_HEADERS             = $(SDM_HEADER_PATH)/private/color_interface.h \
                                  $(SDM_HEADER_PATH)/private/color_params.h \
diff --git a/sdm/libs/core/fb/hw_device.cpp b/sdm/libs/core/fb/hw_device.cpp
index 4931e1b..8d76a09 100644
--- a/sdm/libs/core/fb/hw_device.cpp
+++ b/sdm/libs/core/fb/hw_device.cpp
@@ -46,6 +46,7 @@
 #include <vector>
 #include <algorithm>
 #include <string>
+#include <sstream>
 
 #include "hw_device.h"
 #include "hw_primary.h"
@@ -1363,7 +1364,14 @@
   DLOGW("Pingpong timeout occurred in the driver.");
 #ifdef USER_DEBUG
   // Save the xlogs on ping pong time out
-  std::ofstream  dst("/data/vendor/display/mdp_xlog");
+  const char* xlog_path = "/data/vendor/display/mdp_xlog";
+  DLOGD("Dumping debugfs data to %s", xlog_path);
+  std::ostringstream  dst;
+  auto file = open(xlog_path, O_CREAT | O_DSYNC | O_RDWR, "w+");
+  if (file < 0) {
+    DLOGE("Couldn't open file: err:%d (%s)",errno, strerror(errno));
+    return kErrorResources;
+  }
   dst << "+++ MDP:XLOG +++" << std::endl;
   std::ifstream  src("/sys/kernel/debug/mdp/xlog/dump");
   dst << src.rdbuf() << std::endl;
@@ -1383,6 +1391,14 @@
   src.open("/sys/kernel/debug/mdp/xlog/vbif_dbgbus_xlog");
   dst << src.rdbuf() << std::endl;
   src.close();
+  auto ret = write(file, dst.str().c_str(), dst.str().size());
+  if (ret < 0) {
+    DLOGE("Failed to write xlog data err: %d (%s)", errno, strerror(errno));
+  } else {
+    fsync(file);
+  }
+  close(file);
+  DLOGD("Finished dumping xlogs");;
 #endif
   return kErrorNone;
 }
diff --git a/sdm/libs/hwc2/hwc_color_manager.cpp b/sdm/libs/hwc2/hwc_color_manager.cpp
index 6f33a6d..d753fdc 100644
--- a/sdm/libs/hwc2/hwc_color_manager.cpp
+++ b/sdm/libs/hwc2/hwc_color_manager.cpp
@@ -404,8 +404,8 @@
   };
 
   if (socket_fd_ < 0) {
-    DLOGW("No socket connection available!");
-    return -EFAULT;
+    DLOGW("No socket connection available - assuming dpps is not enabled");
+    return 0;
   }
 
   if (!enable) {  // if client requesting to disable it.
diff --git a/sdm/libs/hwc2/hwc_layers.h b/sdm/libs/hwc2/hwc_layers.h
index 30fc362..25ec4dc 100644
--- a/sdm/libs/hwc2/hwc_layers.h
+++ b/sdm/libs/hwc2/hwc_layers.h
@@ -119,7 +119,7 @@
 };
 
 struct SortLayersByZ {
-  bool operator()(const HWCLayer *lhs, const HWCLayer *rhs) {
+  bool operator()(const HWCLayer *lhs, const HWCLayer *rhs) const {
     return lhs->GetZ() < rhs->GetZ();
   }
 };
diff --git a/sdm/libs/utils/Android.mk b/sdm/libs/utils/Android.mk
index 09e1414..481ea39 100644
--- a/sdm/libs/utils/Android.mk
+++ b/sdm/libs/utils/Android.mk
@@ -18,6 +18,7 @@
 
 SDM_HEADER_PATH := ../../include
 include $(CLEAR_VARS)
+LOCAL_VENDOR_MODULE           := true
 LOCAL_COPY_HEADERS_TO         := $(common_header_export_path)/sdm/utils
 LOCAL_COPY_HEADERS             = $(SDM_HEADER_PATH)/utils/constants.h \
                                  $(SDM_HEADER_PATH)/utils/debug.h \