Camera: Flush all state transitions before reconfigureCamera
Pending ACTIVE<->IDLE states transitions may be queued in StatusTracker.
It's possible that the camera device has transitioned from IDLE to
ACTIVE, but StatusTracker hasn't called notifyStatus(ACTIVE) when
reconfigureCamera() is called.
Solution is to flush the statusTracker before reconfigureCamera().
Test: Camera CTS, vendor testing
Bug: 289974845
Change-Id: I4ceb96b855113cc7e042682df344df6481124997
Merged-In: I4ceb96b855113cc7e042682df344df6481124997
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
index f7a3cc7..4935abf 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
@@ -2254,6 +2254,9 @@
Mutex::Autolock il(mInterfaceLock);
nsecs_t maxExpectedDuration = getExpectedInFlightDuration();
+ // Make sure status tracker is flushed
+ mStatusTracker->flushPendingStates();
+
Mutex::Autolock l(mLock);
if (checkAbandonedStreamsLocked()) {
ALOGW("%s: Abandoned stream detected, session parameters can't be applied correctly!",