Spatializer: fix deadlock in onSupportedLatencyModesChanged
The Spatializer controller must not call AudioFlinger methods from
AudioFlinger callbacks to avoid risks of deadlock with AudioFlinger or
AudioFlinger threads mutexes.
Process the onSupportedLatencyModesChanged() callbakc in the handler
thread instead of synchronously
Bug: 239540985
Test: repro steps in bug
Merged-In: Ia7af5631f26a72adce6ef8dc762196ae58d3f695
Change-Id: Ia7af5631f26a72adce6ef8dc762196ae58d3f695
diff --git a/services/audiopolicy/service/Spatializer.h b/services/audiopolicy/service/Spatializer.h
index 6989a55..c9071d4 100644
--- a/services/audiopolicy/service/Spatializer.h
+++ b/services/audiopolicy/service/Spatializer.h
@@ -210,6 +210,8 @@
void onHeadToStagePoseMsg(const std::vector<float>& headToStage);
void onActualModeChangeMsg(media::HeadTrackingMode mode);
+ void onSupportedLatencyModesChangedMsg(
+ audio_io_handle_t output, std::vector<audio_latency_mode_t>&& modes);
static constexpr int kMaxEffectParamValues = 10;
/**