hal: fix in_call flag is not reset after voice call stop
In voip+voice concurrency case, if voip resume after voice call stop,
then only MODE_IN_COMM instead of MODE_NORMAl and MODE_INCOMM is set.
In this case, in_call flag is not reset.
Fix it to reset in_call flag if call state has been set to inactive
when MODE_IN_COMM is set for voip call.
Change-Id: Idac32a8bafa73b9bd2f885394117457e8d6edfa9
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 1638a22..14fae0e 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -7108,7 +7108,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)