diff options
Diffstat (limited to 'hal/audio_hw.c')
-rw-r--r-- | hal/audio_hw.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/hal/audio_hw.c b/hal/audio_hw.c index ca86d75b..3b8d6e08 100644 --- a/hal/audio_hw.c +++ b/hal/audio_hw.c @@ -801,6 +801,9 @@ int start_input_stream(struct stream_in *in) uc_info->out_snd_device = SND_DEVICE_NONE; list_add_tail(&adev->usecase_list, &uc_info->list); + + audio_extn_perf_lock_acquire(); + select_devices(adev, in->usecase); ALOGV("%s: Opening PCM device card_id(%d) device_id(%d), channels %d", @@ -835,12 +838,16 @@ int start_input_stream(struct stream_in *in) ALOGV("%s: pcm_prepare start", __func__); pcm_prepare(in->pcm); + + audio_extn_perf_lock_release(); + ALOGV("%s: exit", __func__); return ret; error_open: stop_input_stream(in); + audio_extn_perf_lock_release(); error_config: adev->active_input = NULL; @@ -1153,6 +1160,8 @@ int start_output_stream(struct stream_out *out) list_add_tail(&adev->usecase_list, &uc_info->list); + audio_extn_perf_lock_acquire(); + select_devices(adev, out->usecase); audio_extn_extspk_update(adev->extspk); @@ -1209,9 +1218,11 @@ int start_output_stream(struct stream_out *out) if (adev->offload_effects_start_output != NULL) adev->offload_effects_start_output(out->handle, out->pcm_device_id); } + audio_extn_perf_lock_release(); ALOGV("%s: exit", __func__); return 0; error_open: + audio_extn_perf_lock_release(); stop_output_stream(out); error_config: return ret; @@ -2977,6 +2988,8 @@ static int adev_open(const hw_module_t *module, const char *name, if (adev->adm_init) adev->adm_data = adev->adm_init(); + audio_extn_perf_lock_init(); + ALOGV("%s: exit", __func__); return 0; } |