From 20ad9ed95408d08dec1021e7f06afe8cc2ab04ef Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Tue, 2 Aug 2022 16:12:36 +0200 Subject: [PATCH] AudioService: fix initial spatial audio enable state. Fix SpatializerHelper.setSpatializerEnabledInt() to avoid overriding the enable state computed by onRoutingUpdated() when spatial audio is enabled. Bug: 238378679 Test: repro steps in the bug Change-Id: I2e77945c889c1db093832f780c632a626e979e7c --- .../server/audio/SpatializerHelper.java | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/services/core/java/com/android/server/audio/SpatializerHelper.java b/services/core/java/com/android/server/audio/SpatializerHelper.java index 1def72b2987f1..d23b95b80ec93 100644 --- a/services/core/java/com/android/server/audio/SpatializerHelper.java +++ b/services/core/java/com/android/server/audio/SpatializerHelper.java @@ -751,33 +751,29 @@ public class SpatializerHelper { if (enabled) { throw (new IllegalStateException("Can't enable when uninitialized")); } - return; + break; case STATE_NOT_SUPPORTED: if (enabled) { Log.e(TAG, "Can't enable when unsupported"); } - return; + break; case STATE_DISABLED_UNAVAILABLE: case STATE_DISABLED_AVAILABLE: if (enabled) { createSpat(); onRoutingUpdated(); - break; - } else { - // already in disabled state - return; - } + // onRoutingUpdated() can update the "enabled" state based on context + // and will call setDispatchFeatureEnabledState(). + } // else { nothing to do as already disabled } + break; case STATE_ENABLED_UNAVAILABLE: case STATE_ENABLED_AVAILABLE: if (!enabled) { releaseSpat(); - break; - } else { - // already in enabled state - return; - } + setDispatchFeatureEnabledState(false, "setSpatializerEnabledInt"); + } // else { nothing to do as already enabled } + break; } - setDispatchFeatureEnabledState(enabled, "setSpatializerEnabledInt"); } synchronized int getCapableImmersiveAudioLevel() {