QCamera2: HAL3: Avoid race condition during HFR video stop

The video stream stop sequence can encounter a race conidtion
in case pending buffers arrive during the same time frame. Any
incoming stream callbacks that manage to execute during the
window between 'mDataQ' flush and 'flushFreeBatchBufQ' will modify
the 'mBufsStaged' counter without the knowledge of the top
'QCamera3HardwareInterface' instance. This makes subsequent calls
'aggregateBufToBatch' prone to batch overflow errors.
To resolve this, call 'flushFreeBatchBufQ' before flushing 'mDataQ'.
This way calls to 'aggregateBufToBatch' from failing stream
callbacks should not be successfull in modifiying 'mBufsStaged'.

Bug: 65549208
Test: Camera CTS
Change-Id: Iee55ebd57e66ca359fa1eaa21fcc86021f2b920b
diff --git a/camera/QCamera2/HAL3/QCamera3Stream.cpp b/camera/QCamera2/HAL3/QCamera3Stream.cpp
index 399e73d..e87d1ec 100644
--- a/camera/QCamera2/HAL3/QCamera3Stream.cpp
+++ b/camera/QCamera2/HAL3/QCamera3Stream.cpp
@@ -588,9 +588,9 @@
             break;
         case CAMERA_CMD_TYPE_EXIT:
             CDBG_HIGH("%s: Exit", __func__);
+            pme->flushFreeBatchBufQ();
             /* flush data buf queue */
             pme->mDataQ.flush();
-            pme->flushFreeBatchBufQ();
             running = 0;
             break;
         default: