CameraService: fix waitUntilIdle bug revealed by TestingCamera2.
* clear mStreamingRequestList in flush
* fix frame number checker in notify and processCaptureResult
Bug: 14166437
Change-Id: I022421080d05138f9068c1b9b85d83bd613b04fb
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
index f965136..25e97f3 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
@@ -1749,13 +1749,14 @@
gotResult = true;
- if (frameNumber != mNextResultFrameNumber) {
+ // TODO: need to track errors for tighter bounds on expected frame number
+ if (frameNumber < mNextResultFrameNumber) {
SET_ERR("Out-of-order capture result metadata submitted! "
"(got frame number %d, expecting %d)",
frameNumber, mNextResultFrameNumber);
return;
}
- mNextResultFrameNumber++;
+ mNextResultFrameNumber = frameNumber + 1;
CaptureResult captureResult;
captureResult.mResultExtras = resultExtras;
@@ -1889,13 +1890,14 @@
// Verify ordering of shutter notifications
{
Mutex::Autolock l(mOutputLock);
- if (frameNumber != mNextShutterFrameNumber) {
+ // TODO: need to track errors for tighter bounds on expected frame number.
+ if (frameNumber < mNextShutterFrameNumber) {
SET_ERR("Shutter notification out-of-order. Expected "
"notification for frame %d, got frame %d",
mNextShutterFrameNumber, frameNumber);
break;
}
- mNextShutterFrameNumber++;
+ mNextShutterFrameNumber = frameNumber + 1;
}
CaptureResultExtras resultExtras;