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
This commit is contained in:
Eric Laurent
2022-08-02 16:12:36 +02:00
parent 24737bd8d1
commit 20ad9ed954

View File

@@ -751,33 +751,29 @@ public class SpatializerHelper {
if (enabled) { if (enabled) {
throw (new IllegalStateException("Can't enable when uninitialized")); throw (new IllegalStateException("Can't enable when uninitialized"));
} }
return; break;
case STATE_NOT_SUPPORTED: case STATE_NOT_SUPPORTED:
if (enabled) { if (enabled) {
Log.e(TAG, "Can't enable when unsupported"); Log.e(TAG, "Can't enable when unsupported");
} }
return; break;
case STATE_DISABLED_UNAVAILABLE: case STATE_DISABLED_UNAVAILABLE:
case STATE_DISABLED_AVAILABLE: case STATE_DISABLED_AVAILABLE:
if (enabled) { if (enabled) {
createSpat(); createSpat();
onRoutingUpdated(); onRoutingUpdated();
break; // onRoutingUpdated() can update the "enabled" state based on context
} else { // and will call setDispatchFeatureEnabledState().
// already in disabled state } // else { nothing to do as already disabled }
return; break;
}
case STATE_ENABLED_UNAVAILABLE: case STATE_ENABLED_UNAVAILABLE:
case STATE_ENABLED_AVAILABLE: case STATE_ENABLED_AVAILABLE:
if (!enabled) { if (!enabled) {
releaseSpat(); releaseSpat();
break; setDispatchFeatureEnabledState(false, "setSpatializerEnabledInt");
} else { } // else { nothing to do as already enabled }
// already in enabled state break;
return;
}
} }
setDispatchFeatureEnabledState(enabled, "setSpatializerEnabledInt");
} }
synchronized int getCapableImmersiveAudioLevel() { synchronized int getCapableImmersiveAudioLevel() {