summaryrefslogtreecommitdiffstats
path: root/policy_hal/AudioPolicyManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'policy_hal/AudioPolicyManager.cpp')
-rw-r--r--policy_hal/AudioPolicyManager.cpp14
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;