diff options
author | Zhijun He <zhijunhe@google.com> | 2013-11-21 12:57:51 -0800 |
---|---|---|
committer | Zhijun He <zhijunhe@google.com> | 2013-11-21 12:57:51 -0800 |
commit | 1b05dfc8df5e741086747d076fc39c79fb4acb33 (patch) | |
tree | 173a6af9ae4f8def8af48efd9019857a15227bf6 /services/camera/libcameraservice/device3 | |
parent | 213ce79e943a3b51d7859a184d8211c859c960a0 (diff) | |
download | frameworks_av-1b05dfc8df5e741086747d076fc39c79fb4acb33.zip frameworks_av-1b05dfc8df5e741086747d076fc39c79fb4acb33.tar.gz frameworks_av-1b05dfc8df5e741086747d076fc39c79fb4acb33.tar.bz2 |
Camera3: Remove request from InFlightMap for error case
We don't expect HAL send back valid result metadata if error occurs for a
request, such as during flush call. The request needs to be removed from in
flight request map accordingly.
Bug: 9758581
Change-Id: I51fe327337325ce72f11ce592778a2af02e98479
Diffstat (limited to 'services/camera/libcameraservice/device3')
-rw-r--r-- | services/camera/libcameraservice/device3/Camera3Device.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp index 4d480e9..d02027a 100644 --- a/services/camera/libcameraservice/device3/Camera3Device.cpp +++ b/services/camera/libcameraservice/device3/Camera3Device.cpp @@ -1660,8 +1660,10 @@ void Camera3Device::processCaptureResult(const camera3_capture_result *result) { return; } - // Check if everything has arrived for this result (buffers and metadata) - if (request.haveResultMetadata && request.numBuffersLeft == 0) { + // Check if everything has arrived for this result (buffers and metadata), remove it from + // InFlightMap if both arrived or HAL reports error for this request (i.e. during flush). + if ((request.requestStatus != OK) || + (request.haveResultMetadata && request.numBuffersLeft == 0)) { ATRACE_ASYNC_END("frame capture", frameNumber); mInFlightMap.removeItemsAt(idx, 1); } |