Merge "hal: fix in_call flag is not reset after voice call stop"
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 9769653..3181a82 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -7124,7 +7124,9 @@
if (adev->mode != mode) {
ALOGD("%s: mode %d\n", __func__, mode);
adev->mode = mode;
- if ((mode == AUDIO_MODE_NORMAL) && voice_is_in_call(adev)) {
+ if (voice_is_in_call(adev) &&
+ (mode == AUDIO_MODE_NORMAL ||
+ (mode == AUDIO_MODE_IN_COMMUNICATION && !voice_is_call_state_active(adev)))) {
list_for_each(node, &adev->usecase_list) {
usecase = node_to_item(node, struct audio_usecase, list);
if (usecase->type == VOICE_CALL)