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/device3/Camera3Device.h b/services/camera/libcameraservice/device3/Camera3Device.h
index 3a46ee6..6985514 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.h
+++ b/services/camera/libcameraservice/device3/Camera3Device.h
@@ -20,6 +20,7 @@
#include <utility>
#include <unordered_map>
#include <set>
+#include <tuple>
#include <utils/Condition.h>
#include <utils/Errors.h>
@@ -1221,7 +1222,7 @@
// Guarded by mLock
wp<NotificationListener> mListener;
- std::unordered_map<int, sp<camera3::Camera3StreamInterface> > mPendingStreams;
+ std::list<std::tuple<int, sp<camera3::Camera3StreamInterface>>> mPendingStreams;
bool mActive;
bool mCancelNow;