From 52d8adf7ce684b0fa4e3af85799e983d1d3ae34c Mon Sep 17 00:00:00 2001 From: Demon000 Date: Thu, 5 Oct 2017 06:55:29 +0300 Subject: CameraWrapper: close native handles Android camera framework expects camera HAL to release native handles in case of video buffer. Old camera HALs don't release native handles internally, causing video recording to freeze after ~30s. This workaround is the equivalent of https://review.lineageos.org/#/c/165102/ Change-Id: Ie9e9abdede3dccada9e5002725a157f4960643e9 --- camera-wrapper/CameraWrapper.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'camera-wrapper/CameraWrapper.cpp') diff --git a/camera-wrapper/CameraWrapper.cpp b/camera-wrapper/CameraWrapper.cpp index 8551d25..5bd67ce 100644 --- a/camera-wrapper/CameraWrapper.cpp +++ b/camera-wrapper/CameraWrapper.cpp @@ -25,7 +25,7 @@ #define LOG_TAG "CameraWrapper" #include - +#include #include #include #include @@ -33,6 +33,7 @@ #include #include #include +#include // For VideoNativeHandleMetadata using namespace android; @@ -292,10 +293,16 @@ static void camera_release_recording_frame(struct camera_device *device, if (!device) return; + VideoNativeHandleMetadata* md = (VideoNativeHandleMetadata*) opaque; + native_handle_t* nh = md->pHandle; + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); VENDOR_CALL(device, release_recording_frame, opaque); + + native_handle_close(nh); + native_handle_delete(nh); } static int camera_auto_focus(struct camera_device *device) -- cgit v1.2.3