From 06ced051d9cc2c8aac6b1ef41a056904600c69d8 Mon Sep 17 00:00:00 2001 From: chenhg Date: Wed, 10 Oct 2018 17:07:21 -0700 Subject: [PATCH] Avoid segfaults if disconnect USB camera while preview. BUG: 117575807 Test: manual test by disconnect USB camera while preview. Change-Id: Ia74b03e7f2a672efd9e9dfd651b5894529daeeee --- camera/device/3.4/default/ExternalCameraDeviceSession.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/camera/device/3.4/default/ExternalCameraDeviceSession.cpp b/camera/device/3.4/default/ExternalCameraDeviceSession.cpp index 28ca0f351c..1b7391497c 100644 --- a/camera/device/3.4/default/ExternalCameraDeviceSession.cpp +++ b/camera/device/3.4/default/ExternalCameraDeviceSession.cpp @@ -1737,7 +1737,11 @@ bool ExternalCameraDeviceSession::OutputThread::threadLoop() { // TODO: see if we can save some computation by converting to YV12 here uint8_t* inData; size_t inDataSize; - req->frameIn->map(&inData, &inDataSize); + if (req->frameIn->map(&inData, &inDataSize) != 0) { + lk.unlock(); + return onDeviceError("%s: V4L2 buffer map failed", __FUNCTION__); + } + // TODO: in some special case maybe we can decode jpg directly to gralloc output? ATRACE_BEGIN("MJPGtoI420"); int res = libyuv::MJPGToI420(