Loading camera/device/default/ExternalCameraDeviceSession.cpp +12 −7 Original line number Diff line number Diff line Loading @@ -1391,12 +1391,14 @@ Status ExternalCameraDeviceSession::importRequestLockedImpl( // All buffers are imported. Now validate output buffer acquire fences for (size_t i = 0; i < numOutputBufs; i++) { if (!sHandleImporter.importFence( ::android::makeFromAidl(request.outputBuffers[i].acquireFence), allFences[i])) { native_handle_t* h = ::android::makeFromAidl(request.outputBuffers[i].acquireFence); if (!sHandleImporter.importFence(h, allFences[i])) { ALOGE("%s: output buffer %zu acquire fence is invalid", __FUNCTION__, i); cleanupInflightFences(allFences, i); native_handle_delete(h); return Status::INTERNAL_ERROR; } native_handle_delete(h); } return Status::OK; } Loading Loading @@ -2094,9 +2096,10 @@ bool ExternalCameraDeviceSession::BufferRequestThread::threadLoop() { // TODO: create a batch import API so we don't need to lock/unlock mCbsLock // repeatedly? lk.unlock(); Status s = parent->importBuffer(streamId, hBuf.bufferId, makeFromAidl(hBuf.buffer), native_handle_t* h = makeFromAidl(hBuf.buffer); Status s = parent->importBuffer(streamId, hBuf.bufferId, h, /*out*/ &mBufferReqs[i].bufPtr); native_handle_delete(h); lk.lock(); if (s != Status::OK) { Loading @@ -2104,12 +2107,14 @@ bool ExternalCameraDeviceSession::BufferRequestThread::threadLoop() { cleanupInflightFences(importedFences, i - 1); return false; } if (!sHandleImporter.importFence(makeFromAidl(hBuf.acquireFence), mBufferReqs[i].acquireFence)) { h = makeFromAidl(hBuf.acquireFence); if (!sHandleImporter.importFence(h, mBufferReqs[i].acquireFence)) { ALOGE("%s: stream %d import fence failed!", __FUNCTION__, streamId); cleanupInflightFences(importedFences, i - 1); native_handle_delete(h); return false; } native_handle_delete(h); importedFences[i] = mBufferReqs[i].acquireFence; } break; default: Loading camera/device/default/ExternalCameraOfflineSession.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -111,6 +111,7 @@ Status ExternalCameraOfflineSession::processCaptureResult(std::shared_ptr<HalReq native_handle_t* handle = native_handle_create(/*numFds*/ 1, /*numInts*/ 0); handle->data[0] = req->buffers[i].acquireFence; result.outputBuffers[i].releaseFence = android::dupToAidl(handle); native_handle_delete(handle); } notifyError(req->frameNumber, req->buffers[i].streamId, ErrorCode::ERROR_BUFFER); } else { Loading @@ -120,6 +121,7 @@ Status ExternalCameraOfflineSession::processCaptureResult(std::shared_ptr<HalReq native_handle_t* handle = native_handle_create(/*numFds*/ 1, /*numInts*/ 0); handle->data[0] = req->buffers[i].acquireFence; outputBuffer.releaseFence = android::dupToAidl(handle); native_handle_delete(handle); } } } Loading Loading @@ -248,6 +250,7 @@ Status ExternalCameraOfflineSession::processCaptureRequestError( native_handle_t* handle = native_handle_create(/*numFds*/ 1, /*numInts*/ 0); handle->data[0] = req->buffers[i].acquireFence; outputBuffer.releaseFence = dupToAidl(handle); native_handle_delete(handle); } } Loading Loading
camera/device/default/ExternalCameraDeviceSession.cpp +12 −7 Original line number Diff line number Diff line Loading @@ -1391,12 +1391,14 @@ Status ExternalCameraDeviceSession::importRequestLockedImpl( // All buffers are imported. Now validate output buffer acquire fences for (size_t i = 0; i < numOutputBufs; i++) { if (!sHandleImporter.importFence( ::android::makeFromAidl(request.outputBuffers[i].acquireFence), allFences[i])) { native_handle_t* h = ::android::makeFromAidl(request.outputBuffers[i].acquireFence); if (!sHandleImporter.importFence(h, allFences[i])) { ALOGE("%s: output buffer %zu acquire fence is invalid", __FUNCTION__, i); cleanupInflightFences(allFences, i); native_handle_delete(h); return Status::INTERNAL_ERROR; } native_handle_delete(h); } return Status::OK; } Loading Loading @@ -2094,9 +2096,10 @@ bool ExternalCameraDeviceSession::BufferRequestThread::threadLoop() { // TODO: create a batch import API so we don't need to lock/unlock mCbsLock // repeatedly? lk.unlock(); Status s = parent->importBuffer(streamId, hBuf.bufferId, makeFromAidl(hBuf.buffer), native_handle_t* h = makeFromAidl(hBuf.buffer); Status s = parent->importBuffer(streamId, hBuf.bufferId, h, /*out*/ &mBufferReqs[i].bufPtr); native_handle_delete(h); lk.lock(); if (s != Status::OK) { Loading @@ -2104,12 +2107,14 @@ bool ExternalCameraDeviceSession::BufferRequestThread::threadLoop() { cleanupInflightFences(importedFences, i - 1); return false; } if (!sHandleImporter.importFence(makeFromAidl(hBuf.acquireFence), mBufferReqs[i].acquireFence)) { h = makeFromAidl(hBuf.acquireFence); if (!sHandleImporter.importFence(h, mBufferReqs[i].acquireFence)) { ALOGE("%s: stream %d import fence failed!", __FUNCTION__, streamId); cleanupInflightFences(importedFences, i - 1); native_handle_delete(h); return false; } native_handle_delete(h); importedFences[i] = mBufferReqs[i].acquireFence; } break; default: Loading
camera/device/default/ExternalCameraOfflineSession.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -111,6 +111,7 @@ Status ExternalCameraOfflineSession::processCaptureResult(std::shared_ptr<HalReq native_handle_t* handle = native_handle_create(/*numFds*/ 1, /*numInts*/ 0); handle->data[0] = req->buffers[i].acquireFence; result.outputBuffers[i].releaseFence = android::dupToAidl(handle); native_handle_delete(handle); } notifyError(req->frameNumber, req->buffers[i].streamId, ErrorCode::ERROR_BUFFER); } else { Loading @@ -120,6 +121,7 @@ Status ExternalCameraOfflineSession::processCaptureResult(std::shared_ptr<HalReq native_handle_t* handle = native_handle_create(/*numFds*/ 1, /*numInts*/ 0); handle->data[0] = req->buffers[i].acquireFence; outputBuffer.releaseFence = android::dupToAidl(handle); native_handle_delete(handle); } } } Loading Loading @@ -248,6 +250,7 @@ Status ExternalCameraOfflineSession::processCaptureRequestError( native_handle_t* handle = native_handle_create(/*numFds*/ 1, /*numInts*/ 0); handle->data[0] = req->buffers[i].acquireFence; outputBuffer.releaseFence = dupToAidl(handle); native_handle_delete(handle); } } Loading