am c777e8df: Merge commit \'2c69188d9160b5e71ccffa6e42759c12fdb5965c\' into HEAD
* commit 'c777e8df408ea2bac6e283d0e9986725e8b41330':
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 08d9c32..48c426d 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -311,6 +311,12 @@
usecase = node_to_item(node, struct audio_usecase, list);
if (switch_device[usecase->id]) {
disable_snd_device(adev, usecase->out_snd_device, false);
+ }
+ }
+
+ list_for_each(node, &adev->usecase_list) {
+ usecase = node_to_item(node, struct audio_usecase, list);
+ if (switch_device[usecase->id]) {
enable_snd_device(adev, snd_device, false);
}
}
@@ -1178,6 +1184,7 @@
pthread_mutex_lock(&out->lock);
if (!out->standby) {
+ pthread_mutex_lock(&adev->lock);
out->standby = true;
if (out->usecase != USECASE_AUDIO_PLAYBACK_OFFLOAD) {
if (out->pcm) {
@@ -1193,7 +1200,6 @@
out->compr = NULL;
}
}
- pthread_mutex_lock(&adev->lock);
stop_output_stream(out);
pthread_mutex_unlock(&adev->lock);
}
@@ -1667,12 +1673,12 @@
ALOGV("%s: enter", __func__);
pthread_mutex_lock(&in->lock);
if (!in->standby) {
+ pthread_mutex_lock(&adev->lock);
in->standby = true;
if (in->pcm) {
pcm_close(in->pcm);
in->pcm = NULL;
}
- pthread_mutex_lock(&adev->lock);
status = stop_input_stream(in);
pthread_mutex_unlock(&adev->lock);
}
@@ -1857,6 +1863,7 @@
/* Init use case and pcm_config */
if (out->flags & AUDIO_OUTPUT_FLAG_DIRECT &&
+ !(out->flags & AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD) &&
out->devices & AUDIO_DEVICE_OUT_AUX_DIGITAL) {
pthread_mutex_lock(&adev->lock);
ret = read_hdmi_channel_masks(out);