Fix map key in PreparerThread pending streams.
mPendingStreams in PrepareThread was a map
[max stream buffers -> Camera3Streaminterface].
This would cause two streams with the same max buffers to be added
to the map only once which is unintended.
Changed mPendingStreams from
std::unordered_map<int, Camera3StreamInterface> to
std::list<std::tuple<int,Camera3StreamInterface>>
Bug: 259735869
Test: NativeCameraDeviceTest.java#testCameraDevicePrepareSurface
Change-Id: I501b9d2fab4705bf24a2ec8b628803392a36f44b
Signed-off-by: Jayant Chowdhary <jchowdhary@google.com>
diff --git a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
index 34b3948..c4f6fed 100644
--- a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
+++ b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
@@ -1481,7 +1481,7 @@
binder::Status CameraDeviceClient::prepare(int streamId) {
ATRACE_CALL();
- ALOGV("%s", __FUNCTION__);
+ ALOGV("%s stream id %d", __FUNCTION__, streamId);
binder::Status res;
if (!(res = checkPidStatus(__FUNCTION__)).isOk()) return res;
@@ -1521,7 +1521,7 @@
binder::Status CameraDeviceClient::prepare2(int maxCount, int streamId) {
ATRACE_CALL();
- ALOGV("%s", __FUNCTION__);
+ ALOGV("%s stream id %d", __FUNCTION__, streamId);
binder::Status res;
if (!(res = checkPidStatus(__FUNCTION__)).isOk()) return res;
@@ -2046,6 +2046,7 @@
// Thread safe. Don't bother locking.
sp<hardware::camera2::ICameraDeviceCallbacks> remoteCb = getRemoteCallback();
if (remoteCb != 0) {
+ ALOGV("%s: stream id %d", __FUNCTION__, streamId);
remoteCb->onPrepared(streamId);
}
}