diff options
Diffstat (limited to 'policy_hal/AudioPolicyManager.cpp')
-rw-r--r-- | policy_hal/AudioPolicyManager.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/policy_hal/AudioPolicyManager.cpp b/policy_hal/AudioPolicyManager.cpp index 829982c7..52ead1bd 100644 --- a/policy_hal/AudioPolicyManager.cpp +++ b/policy_hal/AudioPolicyManager.cpp @@ -1226,9 +1226,14 @@ status_t AudioPolicyManagerCustom::checkAndSetVolume(audio_stream_type_t stream, #ifdef FM_POWER_OPT } else if (stream == AUDIO_STREAM_MUSIC && hasPrimaryOutput() && outputDesc == mPrimaryOutput) { - AudioParameter param = AudioParameter(); - param.addFloat(String8("fm_volume"), Volume::DbToAmpl(volumeDb)); - mpClientInterface->setParameters(mPrimaryOutput->mIoHandle, param.toString(), delayMs); + /* Avoid unnecessary set_parameter calls as it puts the primary + outputs FastMixer in HOT_IDLE leading to breaks in audio */ + if (volumeDb != mPrevFMVolumeDb) { + mPrevFMVolumeDb = volumeDb; + AudioParameter param = AudioParameter(); + param.addFloat(String8("fm_volume"), Volume::DbToAmpl(volumeDb)); + mpClientInterface->setParameters(mPrimaryOutput->mIoHandle, param.toString(), delayMs); + } #endif /* FM_POWER_OPT end */ } @@ -1949,7 +1954,8 @@ AudioPolicyManagerCustom::AudioPolicyManagerCustom(AudioPolicyClientInterface *c : AudioPolicyManager(clientInterface), mHdmiAudioDisabled(false), mHdmiAudioEvent(false), - mPrevPhoneState(0) + mPrevPhoneState(0), + mPrevFMVolumeDb(0.0f) { char ssr_enabled[PROPERTY_VALUE_MAX] = {0}; bool prop_ssr_enabled = false; |