Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1d5c7f26 authored by Kunlei Zhang's avatar Kunlei Zhang
Browse files

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
parent ac9ef4fc
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -8005,7 +8005,9 @@ static int adev_set_mode(struct audio_hw_device *dev, audio_mode_t mode)
    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)