Camera2: Tests: Fix CameraFrameTests to pass instead of failing and hanging.
Producer would wait for buffers to be released so it could dequeue into them.
Since the test never acquired/released buffers, it would run out, and then
the HAL would deadlock when trying to shutdown since the producing thread
would never finish.
Change-Id: I4222feeec7a3ffab4c243e12b7d9bd56364ad983
diff --git a/tests/camera2/CameraFrameTests.cpp b/tests/camera2/CameraFrameTests.cpp
index fc681c4..13d1b17 100644
--- a/tests/camera2/CameraFrameTests.cpp
+++ b/tests/camera2/CameraFrameTests.cpp
@@ -115,8 +115,18 @@
for (int i = 0; i < GetParam(); ++i) {
ALOGV("Reading capture request %d", i);
ASSERT_EQ(OK, mDevice->waitForNextFrame(CAMERA_FRAME_TIMEOUT));
+
CameraMetadata frameMetadata;
ASSERT_EQ(OK, mDevice->getNextFrame(&frameMetadata));
+
+ // wait for buffer to be available
+ ASSERT_EQ(OK, mFrameListener->waitForFrame(CAMERA_FRAME_TIMEOUT));
+ ALOGV("We got the frame now");
+
+ // mark buffer consumed so producer can re-dequeue it
+ CpuConsumer::LockedBuffer imgBuffer;
+ ASSERT_EQ(OK, mCpuConsumer->lockNextBuffer(&imgBuffer));
+ ASSERT_EQ(OK, mCpuConsumer->unlockBuffer(imgBuffer));
}
}