audio flinger: fix audio patch release
Release playback and capture threads associated to a softwware
audio patch when the patch handle is reused.
Bug: 25638953.
Change-Id: Ie832513043525dda9089f8e83018810add2a4d6e
diff --git a/services/audioflinger/PatchPanel.cpp b/services/audioflinger/PatchPanel.cpp
index 89de68e..f8671b5 100644
--- a/services/audioflinger/PatchPanel.cpp
+++ b/services/audioflinger/PatchPanel.cpp
@@ -168,6 +168,12 @@
ALOGV("createAudioPatch() removing patch handle %d", *handle);
halHandle = mPatches[index]->mHalHandle;
Patch *removedPatch = mPatches[index];
+ if ((removedPatch->mRecordPatchHandle
+ != AUDIO_PATCH_HANDLE_NONE) ||
+ (removedPatch->mPlaybackPatchHandle !=
+ AUDIO_PATCH_HANDLE_NONE)) {
+ clearPatchConnections(removedPatch);
+ }
mPatches.removeAt(index);
delete removedPatch;
break;