AudioPolicyService: Fix mutex ordering issue
Test: Spatialization playback with order checking
Bug: 315240650
Change-Id: I8179352f0f503a67076bf4fd5328227861646bd5
diff --git a/services/audiopolicy/service/AudioPolicyService.cpp b/services/audiopolicy/service/AudioPolicyService.cpp
index 7241597..5d3788d 100644
--- a/services/audiopolicy/service/AudioPolicyService.cpp
+++ b/services/audiopolicy/service/AudioPolicyService.cpp
@@ -299,7 +299,11 @@
AudioDeviceTypeAddrVector devices;
bool hasSpatializer = mAudioPolicyManager->canBeSpatialized(&attr, nullptr, devices);
if (hasSpatializer) {
+ // Unlock as Spatializer::create() will use the callback and acquire the
+ // AudioPolicyService_Mutex.
+ mLock.unlock();
mSpatializer = Spatializer::create(this, effectsFactoryHal);
+ mLock.lock();
}
if (mSpatializer == nullptr) {
// No spatializer created, signal the reason: NO_INIT a failure, OK means intended.