Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 75846243 authored by Yin-Chia Yeh's avatar Yin-Chia Yeh
Browse files

Camera: avoid double closing FD

Right now conventional HAL close the acquire_fence FD so wrapper
should not close it again. However, we might need to change this
behavior later to make camera service agnostic to passthrough or
binderized mode.

Bug: 34169301
Change-Id: I96b46521e4081b43e7a7e9c9efa98121739dda99
parent 35e47f53
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -97,6 +97,9 @@ public:
//TODO(b/34110242): make this hidl transport agnostic
#ifdef BINDERIZED
            fd = dup(handle->data[0]);
            // TODO(b/34169301)
            // Camera service expect FD be closed by HAL process (in passthrough mode)
            // close(handle->data[0]);
#else
            fd = handle->data[0];
#endif
@@ -695,14 +698,16 @@ void CameraDeviceSession::sProcessCaptureResult(
        if (hasInputBuf) {
            int streamId = static_cast<Camera3Stream*>(hal_result->input_buffer->stream)->mId;
            auto key = std::make_pair(streamId, frameNumber);
            sHandleImporter.closeFence(d->mInflightBuffers[key].acquire_fence);
            // TODO (b/34169301): currently HAL closed the fence
            //sHandleImporter.closeFence(d->mInflightBuffers[key].acquire_fence);
            d->mInflightBuffers.erase(key);
        }

        for (size_t i = 0; i < numOutputBufs; i++) {
            int streamId = static_cast<Camera3Stream*>(hal_result->output_buffers[i].stream)->mId;
            auto key = std::make_pair(streamId, frameNumber);
            sHandleImporter.closeFence(d->mInflightBuffers[key].acquire_fence);
            // TODO (b/34169301): currently HAL closed the fence
            //sHandleImporter.closeFence(d->mInflightBuffers[key].acquire_fence);
            d->mInflightBuffers.erase(key);
        }