From 5a95ff689b4a1827488d576f02b6292e4318abb2 Mon Sep 17 00:00:00 2001 From: Ravi Kumar Alamanda Date: Mon, 31 Aug 2015 17:42:44 -0700 Subject: hal: Fix incorrect audio calibration after device switch Start mp3 offload playback on headset, plug-out headset and resume playback on speaker very quickly (within 500ms) and plug-in the headset back within next 2s. Observe that music sound louder because the playback continues with previous speaker calibration as headset calibration is not pushed. Push the calibration data before enabling every use case instead of pushing only once while enabling the sound device to fix the issue. Bug: 23568067 Change-Id: Iade2e42183009b460991bb6ee48b09cff0bcfa8b --- hal/audio_hw.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/hal/audio_hw.c b/hal/audio_hw.c index 70ce0dc3..86072c0c 100644 --- a/hal/audio_hw.c +++ b/hal/audio_hw.c @@ -308,6 +308,8 @@ int enable_snd_device(struct audio_device *adev, return -EINVAL; } + platform_send_audio_calibration(adev->platform, snd_device); + adev->snd_dev_ref_cnt[snd_device]++; if (adev->snd_dev_ref_cnt[snd_device] > 1) { ALOGV("%s: snd_device(%d: %s) is already active", @@ -323,13 +325,6 @@ int enable_snd_device(struct audio_device *adev, if (audio_extn_spkr_prot_is_enabled()) audio_extn_spkr_prot_calib_cancel(adev); - if (platform_send_audio_calibration(adev->platform, snd_device) < 0) { - adev->snd_dev_ref_cnt[snd_device]--; - audio_extn_sound_trigger_update_device_status(snd_device, - ST_EVENT_SND_DEVICE_FREE); - return -EINVAL; - } - audio_extn_dsm_feedback_enable(adev, snd_device, true); if ((snd_device == SND_DEVICE_OUT_SPEAKER || -- cgit v1.2.3