From c716a59f95dc4a5e8c41d3b8a1377ea8b87bafe9 Mon Sep 17 00:00:00 2001
From: Erfan Abdi <erfangplus@gmail.com>
Date: Sat, 6 Oct 2018 18:26:01 +0300
Subject: [PATCH] evert: fix camera

Change-Id: If58025a05713c76853707e4cdf328bf1c4eba1c5
Signed-off-by: Erfan Abdi <erfangplus@gmail.com>
---
 device.mk                    |  4 ++++
 extract-files.sh             |  7 +++++++
 libshims/Android.mk          | 24 ++++++++++++++++++++++++
 libshims/camera_hal_shim.cpp |  8 ++++++++
 proprietary-files.txt        |  6 +++++-
 vendor_prop.mk               |  5 +++++
 6 files changed, 53 insertions(+), 1 deletion(-)
 create mode 100644 libshims/Android.mk
 create mode 100644 libshims/camera_hal_shim.cpp

diff --git a/device.mk b/device.mk
index 8031f49..4454cb0 100644
--- a/device.mk
+++ b/device.mk
@@ -43,6 +43,10 @@ PRODUCT_COPY_FILES += \
 TARGET_SCREEN_HEIGHT := 2160
 TARGET_SCREEN_WIDTH := 1080
 
+# Cmaera Shim
+PRODUCT_PACKAGES += \
+    libcamera_hal_shim
+
 # Fingerprint Gestures
 PRODUCT_COPY_FILES += \
     $(LOCAL_PATH)/keylayout/uinput-fpc.kl:$(TARGET_COPY_OUT_VENDOR)/usr/keylayout/uinput-fpc.kl \
diff --git a/extract-files.sh b/extract-files.sh
index 6d292a1..5745e15 100755
--- a/extract-files.sh
+++ b/extract-files.sh
@@ -40,3 +40,10 @@ sed -i "s|/system/lib/hw/|/vendor/lib/hw/|g" "$CAMERA_IMX386"
 # Load ZAF configs from vendor
 ZAF_CORE="$BLOB_ROOT"/vendor/lib/libzaf_core.so
 sed -i "s|/system/etc/zaf|/vendor/etc/zaf|g" "$ZAF_CORE"
+
+# Using in vendor libgui for O cam blobs
+sed -i "s|libgui.so|libPui.so|g" "$BLOB_ROOT"/vendor/lib/libmmcamera_ppeiscore.so
+sed -i "s|libgui.so|libPui.so|g" "$BLOB_ROOT"/vendor/lib/libmmcamera_vstab_module.so
+
+# Using patchelf to add cam shims
+patchelf --add-needed libcamera_hal_shim.so "$BLOB_ROOT"/vendor/lib/hw/camera.sdm660.so
diff --git a/libshims/Android.mk b/libshims/Android.mk
new file mode 100644
index 0000000..b3de844
--- /dev/null
+++ b/libshims/Android.mk
@@ -0,0 +1,24 @@
+# Copyright (C) 2018 The LineageOS Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH := $(call my-dir)
+
+# Camera
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := camera_hal_shim.cpp
+LOCAL_SHARED_LIBRARIES := libutils
+LOCAL_MODULE := libcamera_hal_shim
+LOCAL_MODULE_TAGS := optional
+LOCAL_PROPRIETARY_MODULE := true
+include $(BUILD_SHARED_LIBRARY)
diff --git a/libshims/camera_hal_shim.cpp b/libshims/camera_hal_shim.cpp
new file mode 100644
index 0000000..f3ce23c
--- /dev/null
+++ b/libshims/camera_hal_shim.cpp
@@ -0,0 +1,8 @@
+#include <stdint.h>
+
+namespace android {
+    extern "C" void _ZN7android9StopWatchC1EPKci(const char* name, int clock);
+    extern "C" void _ZN7android9StopWatchC1EPKcij(const char* name, int clock, uint32_t flags) {
+        _ZN7android9StopWatchC1EPKci(name, clock);
+    }
+}
diff --git a/proprietary-files.txt b/proprietary-files.txt
index 968e283..ea0c56d 100644
--- a/proprietary-files.txt
+++ b/proprietary-files.txt
@@ -429,9 +429,13 @@ vendor/lib64/libubifocus.so
 vendor/lib/libS5k2l7Pdaf.so
 vendor/lib/libS5k2l7PdafCamif.so
 vendor/lib/libmm-qcamera.so
-vendor/lib/libmot_gpu_mapper.so
 lib/libcamera_metadata.so:vendor/lib/libcamera_metadata.so
 
+# Cam from P
+vendor/lib/libmot_gpu_mapper.so|a7477c7604bf9ac8b7b2ead6283eb6ddb80051fa
+vendor/lib/libgui_vendor.so|2289516454cceae50bb3963f9255bc113a24b508
+vendor/lib/libPui.so|2289516454cceae50bb3963f9255bc113a24b508
+
 # Camera - Firmware
 vendor/firmware/cpp_firmware_v1_10_0.fw
 vendor/firmware/cpp_firmware_v1_12_0.fw
diff --git a/vendor_prop.mk b/vendor_prop.mk
index 629f5d9..90ce5fa 100644
--- a/vendor_prop.mk
+++ b/vendor_prop.mk
@@ -12,6 +12,11 @@ PRODUCT_PROPERTY_OVERRIDES += \
     persist.audio.calfile5=/vendor/etc/acdbdata/common/Headset_cal.acdb \
     persist.audio.calfile6=/vendor/etc/acdbdata/common/Speaker_cal.acdb
 
+# Camera
+PRODUCT_PROPERTY_OVERRIDES += \
+    persist.camera.preview.ubwc=0 \
+    video.disable.ubwc=1
+
 # Sensors
 PRODUCT_PROPERTY_OVERRIDES += \
     ro.hardware.sensors=evert \
-- 
GitLab