diff --git a/extract-files.sh b/extract-files.sh index 23e6807..949777a 100755 --- a/extract-files.sh +++ b/extract-files.sh @@ -40,6 +40,9 @@ function blob_fixup { "$PATCHELF" --remove-needed "libcamera_client.so" "$2" "$PATCHELF" --remove-needed "libgui.so" "$2" ;; + vendor/lib*/libsensorlistener.so) + "$PATCHELF" --add-needed "libshim_sensorndkbridge.so" "$2" + ;; esac } diff --git a/libshims/ASensorManager.cpp b/libshims/ASensorManager.cpp new file mode 100644 index 0000000..0d059e6 --- /dev/null +++ b/libshims/ASensorManager.cpp @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2020 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. + */ + +#include + +#define LOG_TAG "libshim_sensorndkbridge" +#include + +using android::Mutex; + +static Mutex gLock; + +extern "C" ALooper *ALooper_forCamera() { + LOG(VERBOSE) << "ALooper_forCamera"; + ALooper *sLooper = NULL; + + Mutex::Autolock autoLock(gLock); + sLooper = new ALooper; + + return sLooper; +} + +extern "C" int ALooper_release_forCamera(ALooper *sLooper) { + if (sLooper != nullptr) { + Mutex::Autolock autoLock(gLock); + delete sLooper; + } + + return 0; +} + +extern "C" int ALooper_pollOnce_camera(ALooper *sLooper, + int timeoutMillis, + int* outFd, + int* outEvents, + void** outData) { + int res = sLooper->pollOnce(timeoutMillis, outFd, outEvents, outData); + LOG(VERBOSE) << "ALooper_pollOnce_camera => " << res; + return res; +} diff --git a/libshims/Android.bp b/libshims/Android.bp index aad3b3c..bf3aa0f 100644 --- a/libshims/Android.bp +++ b/libshims/Android.bp @@ -1,3 +1,22 @@ +cc_library_shared { + name: "libshim_sensorndkbridge", + + srcs: ["ASensorManager.cpp"], + shared_libs: [ + "libbase", + "libsensorndkbridge", + ], + + vendor: true, + + include_dirs: [ + "system/core/base/include", + "system/core/libutils/include", + "frameworks/hardware/interfaces/sensorservice/libsensorndkbridge", + ], + +} + cc_library_shared { name: "libcamera_metadata_helper", proprietary: true, diff --git a/universal7904-common.mk b/universal7904-common.mk index 216bc89..1321bd5 100644 --- a/universal7904-common.mk +++ b/universal7904-common.mk @@ -167,7 +167,8 @@ PRODUCT_COPY_FILES += \ # Shims PRODUCT_PACKAGES += \ - libcamera_metadata_helper + libcamera_metadata_helper \ + libshim_sensorndkbridge # Soong namespaces PRODUCT_SOONG_NAMESPACES += \