Merge "audiopolicy: Fix to close all opened inputs in closeAllInputs"
diff --git a/policy_hal/AudioPolicyManager.cpp b/policy_hal/AudioPolicyManager.cpp
index 85a7393..8d32f66 100644
--- a/policy_hal/AudioPolicyManager.cpp
+++ b/policy_hal/AudioPolicyManager.cpp
@@ -1913,8 +1913,8 @@
 void AudioPolicyManagerCustom::closeAllInputs() {
     bool patchRemoved = false;
 
-    for(size_t input_index = 0; input_index < mInputs.size(); input_index++) {
-        sp<AudioInputDescriptor> inputDesc = mInputs.valueAt(input_index);
+    for(size_t input_index = mInputs.size(); input_index > 0; input_index--) {
+        sp<AudioInputDescriptor> inputDesc = mInputs.valueAt(input_index-1);
         ssize_t patch_index = mAudioPatches.indexOfKey(inputDesc->mPatchHandle);
         if (patch_index >= 0) {
             sp<AudioPatch> patchDesc = mAudioPatches.valueAt(patch_index);
@@ -1925,8 +1925,8 @@
         if ((inputDesc->mIsSoundTrigger) && (mInputs.size() == 1)) {
             ALOGD("Do not close sound trigger input handle");
         } else {
-            mpClientInterface->closeInput(mInputs.keyAt(input_index));
-            mInputs.removeItem(mInputs.keyAt(input_index));
+            mpClientInterface->closeInput(mInputs.keyAt(input_index-1));
+            mInputs.removeItem(mInputs.keyAt(input_index-1));
         }
     }
     nextAudioPortGeneration();