summaryrefslogtreecommitdiffstats
path: root/services/camera
diff options
context:
space:
mode:
authorZhijun He <zhijunhe@google.com>2014-11-25 23:46:12 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-11-25 23:46:12 +0000
commitec7b26f06f7b1b6334ef1139ac33548ed0510284 (patch)
tree00235660c86a2494c245b51084ea13cbc51e11d0 /services/camera
parent20918be9309eda037074388f046c84e187a259c8 (diff)
parent512dd849d0ef9e9988fedfbaf951b4b82523957c (diff)
downloadframeworks_av-ec7b26f06f7b1b6334ef1139ac33548ed0510284.zip
frameworks_av-ec7b26f06f7b1b6334ef1139ac33548ed0510284.tar.gz
frameworks_av-ec7b26f06f7b1b6334ef1139ac33548ed0510284.tar.bz2
am 512dd849: Merge "camera: fix frame deletion logic in mInFlightMap" into lmp-mr1-dev
* commit '512dd849d0ef9e9988fedfbaf951b4b82523957c': camera: fix frame deletion logic in mInFlightMap
Diffstat (limited to 'services/camera')
-rw-r--r--services/camera/libcameraservice/device3/Camera3Device.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
index 6a7f9e7..5281ea6 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
@@ -2028,8 +2028,12 @@ void Camera3Device::processCaptureResult(const camera3_capture_result *result) {
// 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)) {
+ // For per-frame error notifications, camera3.h requirements state that all the
+ // buffer handles for a failed frame capture must be returned via process_capture_result()
+ // call(s). Hence, Camera3Device needs to ensure that the frame entry is not deleted from
+ // mInFlightMap until all buffers for that frame have been returned by HAL.
+ if ((request.numBuffersLeft == 0) &&
+ ((request.requestStatus != OK) || (request.haveResultMetadata))) {
ATRACE_ASYNC_END("frame capture", frameNumber);
mInFlightMap.removeItemsAt(idx, 1);
}