SpatializerThread: Fix EffectHandle release lock order inversion
Release the Spatializer EffectHandle on the PlaybackThread::threadLoop().
Test: Play spatial content with runtime lock order inversion detection
Bug: 315199903
Change-Id: I40bbb666cd511f7e128d6b9f5744627de8b7eb4e
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index 54880f8..0f02944 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -7881,6 +7881,15 @@
}
}
+void SpatializerThread::threadLoop_exit()
+{
+ // The Spatializer EffectHandle must be released on the PlaybackThread
+ // threadLoop() to prevent lock inversion in the SpatializerThread dtor.
+ mFinalDownMixer.clear();
+
+ PlaybackThread::threadLoop_exit();
+}
+
// ----------------------------------------------------------------------------
// Record
// ----------------------------------------------------------------------------