hal: fix voip device selection is not proper after voice call stop
In voip+voice concurrency case, when voip resume after voice call stop,
voip device still uses voice devices. This is due to in_call flag isn't
reset even if voice usecase doesn't exist.
Fix it by adding function to check voice usecase existence and get
correct device for non-voice usecases.
Change-Id: I39ba1092a0ab19c686baa1b80bb9913f64849590
diff --git a/hal/voice.c b/hal/voice.c
index ff6da5a..91eb3ff 100644
--- a/hal/voice.c
+++ b/hal/voice.c
@@ -363,6 +363,22 @@
return session_id;
}
+bool voice_check_voicecall_usecases_active(struct audio_device *adev)
+{
+ struct listnode *node;
+ struct audio_usecase *usecase = NULL;
+
+ list_for_each(node, &adev->usecase_list) {
+ usecase = node_to_item(node, struct audio_usecase, list);
+ if (usecase->type == VOICE_CALL) {
+ ALOGV("%s: voice usecase:%s is active", __func__,
+ use_case_table[usecase->id]);
+ return true;
+ }
+ }
+ return false;
+}
+
int voice_check_and_set_incall_rec_usecase(struct audio_device *adev,
struct stream_in *in)
{