diff options
| author | 2024-02-28 10:18:52 +0000 | |
|---|---|---|
| committer | 2024-02-28 10:18:52 +0000 | |
| commit | c2ef1a133b04171881aec06e7e552711295d233f (patch) | |
| tree | a853affdf2f4beccc7e0593824da7230e39c3e4c | |
| parent | ef6667800d945719b45a0f51475fb0e238a9d367 (diff) | |
| parent | c6df8e0d2f29e1c6ee0b98ab439371b88ca5ecdd (diff) | |
Merge "HDMI: Avoid starting SystemAudioInitiationActionFromAvr multiple times" into main
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java | 8 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java | 24 |
2 files changed, 32 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java index 70993ca3e21b..1e90ab279d32 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java @@ -317,6 +317,10 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource { if ((systemAudioOnPowerOnProp == ALWAYS_SYSTEM_AUDIO_CONTROL_ON_POWER_ON) || ((systemAudioOnPowerOnProp == USE_LAST_STATE_SYSTEM_AUDIO_CONTROL_ON_POWER_ON) && lastSystemAudioControlStatus && isSystemAudioControlFeatureEnabled())) { + if (hasAction(SystemAudioInitiationActionFromAvr.class)) { + Slog.i(TAG, "SystemAudioInitiationActionFromAvr is in progress. Restarting."); + removeAction(SystemAudioInitiationActionFromAvr.class); + } addAndStartAction(new SystemAudioInitiationActionFromAvr(this)); } } @@ -1032,6 +1036,10 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource { void onSystemAudioControlFeatureSupportChanged(boolean enabled) { setSystemAudioControlFeatureEnabled(enabled); if (enabled) { + if (hasAction(SystemAudioInitiationActionFromAvr.class)) { + Slog.i(TAG, "SystemAudioInitiationActionFromAvr is in progress. Restarting."); + removeAction(SystemAudioInitiationActionFromAvr.class); + } addAndStartAction(new SystemAudioInitiationActionFromAvr(this)); } } diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java index a6e05ddc792c..55208972895d 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java @@ -364,6 +364,30 @@ public class HdmiCecLocalDeviceAudioSystemTest { } @Test + public void systemAudioControlOnPowerOn_singleActionStarted() throws Exception { + mHdmiCecLocalDeviceAudioSystem.removeAction(SystemAudioInitiationActionFromAvr.class); + mHdmiCecLocalDeviceAudioSystem.systemAudioControlOnPowerOn( + Constants.ALWAYS_SYSTEM_AUDIO_CONTROL_ON_POWER_ON, true); + mHdmiCecLocalDeviceAudioSystem.systemAudioControlOnPowerOn( + Constants.ALWAYS_SYSTEM_AUDIO_CONTROL_ON_POWER_ON, true); + assertThat( + mHdmiCecLocalDeviceAudioSystem.getActions( + SystemAudioInitiationActionFromAvr.class)) + .hasSize(1); + } + + @Test + public void onSystemAudioControlFeatureSupportChanged_singleActionStarted() throws Exception { + mHdmiCecLocalDeviceAudioSystem.removeAction(SystemAudioInitiationActionFromAvr.class); + mHdmiCecLocalDeviceAudioSystem.onSystemAudioControlFeatureSupportChanged(true); + mHdmiCecLocalDeviceAudioSystem.onSystemAudioControlFeatureSupportChanged(true); + assertThat( + mHdmiCecLocalDeviceAudioSystem.getActions( + SystemAudioInitiationActionFromAvr.class)) + .hasSize(1); + } + + @Test public void handleActiveSource_updateActiveSource() throws Exception { HdmiCecMessage message = HdmiCecMessageBuilder.buildActiveSource(ADDR_TV, 0x0000); ActiveSource expectedActiveSource = new ActiveSource(ADDR_TV, 0x0000); |