Properly unlock on return in process thread
There is a return path in processAudioBuffer that did not
properly drop AudioTrack/AudioRecord object locks, leading
to deadlocks, which were only triggered upon certain lifetime
races.
Test: atest AudioTrackTest, atest AudioRecordTest
Bug: 230312538
Change-Id: I1d48061eca67ef7d5908ae8bd5186cbb3598f149
diff --git a/media/libaudioclient/AudioTrack.cpp b/media/libaudioclient/AudioTrack.cpp
index bec6b10..36f8e10 100644
--- a/media/libaudioclient/AudioTrack.cpp
+++ b/media/libaudioclient/AudioTrack.cpp
@@ -2448,6 +2448,7 @@
sp<IAudioTrackCallback> callback = mCallback.promote();
if (!callback) {
mCallback = nullptr;
+ mLock.unlock();
return NS_NEVER;
}
if (mAwaitBoost) {