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

Commit 576bc15d authored by Ashish Jain's avatar Ashish Jain
Browse files

hal: Avoid derive playback snd device for capture usecase

In case of capture usecase, out stream would be invalid.
Avoid calling derive_playback_snd_device() if usecase type is
capture to avoid invalid out stream access.

CRs-Fixed: 2022593
Change-Id: Ibfcad0446ca2dd12f4167aa4ae91ea8e0cfc8e61
parent b47c3d16
Loading
Loading
Loading
Loading
+12 −13
Original line number Diff line number Diff line
@@ -1087,11 +1087,10 @@ static void check_usecases_codec_backend(struct audio_device *adev,
              platform_get_snd_device_name(snd_device),
              platform_get_snd_device_name(usecase->out_snd_device),
              platform_check_backends_match(snd_device, usecase->out_snd_device));
        if ((usecase->type != PCM_CAPTURE) && (usecase != uc_info)) {
            uc_derive_snd_device = derive_playback_snd_device(adev->platform,
                                               usecase, uc_info, snd_device);
        if (usecase->type != PCM_CAPTURE &&
            usecase != uc_info &&
            ((uc_derive_snd_device != usecase->out_snd_device) || force_routing) &&
            if (((uc_derive_snd_device != usecase->out_snd_device) || force_routing) &&
                ((usecase->devices & AUDIO_DEVICE_OUT_ALL_CODEC_BACKEND) ||
                (usecase->devices & AUDIO_DEVICE_OUT_AUX_DIGITAL) ||
                (usecase->devices & AUDIO_DEVICE_OUT_USB_DEVICE) ||
@@ -1099,7 +1098,6 @@ static void check_usecases_codec_backend(struct audio_device *adev,
                (usecase->devices & AUDIO_DEVICE_OUT_ALL_SCO)) &&
                ((force_restart_session) ||
                (platform_check_backends_match(snd_device, usecase->out_snd_device)))) {

                ALOGD("%s:becf: check_usecases (%s) is active on (%s) - disabling ..",
                    __func__, use_case_table[usecase->id],
                      platform_get_snd_device_name(usecase->out_snd_device));
@@ -1110,6 +1108,7 @@ static void check_usecases_codec_backend(struct audio_device *adev,
                num_uc_to_switch++;
            }
        }
    }

    ALOGD("%s:becf: check_usecases num.of Usecases to switch %d", __func__,
        num_uc_to_switch);