summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorqctecmdr <qctecmdr@localhost>2022-06-07 04:38:29 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2022-06-07 04:38:29 -0700
commited2a13da30c687f9b1ed75a5e6d9660762405fc2 (patch)
tree9cf51077fbd0d62627ab27c026d8042b33fc6a3d
parentec1716dead52b49806dcb787033dc60eb9eb4df8 (diff)
parent84991bfc1c81ab1b6ceab44e61a21b3918bc7b75 (diff)
Merge "hal: split usb headset into input and output device at disconnection"
-rw-r--r--[-rwxr-xr-x]hal/Android.mk0
-rw-r--r--hal/AudioDevice.cpp21
2 files changed, 14 insertions, 7 deletions
diff --git a/hal/Android.mk b/hal/Android.mk
index 0b075dfb..0b075dfb 100755..100644
--- a/hal/Android.mk
+++ b/hal/Android.mk
diff --git a/hal/AudioDevice.cpp b/hal/AudioDevice.cpp
index 5ea2666e..bd7afbd2 100644
--- a/hal/AudioDevice.cpp
+++ b/hal/AudioDevice.cpp
@@ -2,6 +2,9 @@
* Copyright (c) 2013-2021, The Linux Foundation. All rights reserved.
* Not a Contribution.
*
+ * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Not a Contribution.
+ *
* Copyright (C) 2013 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -1420,7 +1423,8 @@ int AudioDevice::SetParameters(const char *kvpairs) {
pal_device_count = GetPalDeviceIds({device}, pal_device_ids);
ret = add_input_headset_if_usb_out_headset(&pal_device_count, &pal_device_ids);
if (ret) {
- free(pal_device_ids);
+ if (pal_device_ids)
+ free(pal_device_ids);
AHAL_ERR("adding input headset failed, error:%d", ret);
goto exit;
}
@@ -1451,8 +1455,8 @@ int AudioDevice::SetParameters(const char *kvpairs) {
ret = pal_get_param(PAL_PARAM_ID_DEVICE_CAPABILITY,
(void **)&device_cap_query,
&payload_size, nullptr);
- if (dynamic_media_config.sample_rate == 0 && dynamic_media_config.format == 0 &&
- dynamic_media_config.mask == 0)
+ if ((dynamic_media_config.sample_rate == 0 && dynamic_media_config.format == 0 &&
+ dynamic_media_config.mask == 0) || (dynamic_media_config.jack_status == false))
usb_input_dev_enabled = false;
free(device_cap_query);
} else {
@@ -1609,6 +1613,13 @@ int AudioDevice::SetParameters(const char *kvpairs) {
if (device) {
pal_device_ids = (pal_device_id_t *) calloc(1, sizeof(pal_device_id_t));
pal_device_count = GetPalDeviceIds({device}, pal_device_ids);
+ ret = add_input_headset_if_usb_out_headset(&pal_device_count, &pal_device_ids);
+ if (ret) {
+ if (pal_device_ids)
+ free(pal_device_ids);
+ AHAL_ERR("adding input headset failed, error:%d", ret);
+ goto exit;
+ }
for (int i = 0; i < pal_device_count; i++) {
param_device_connection.connection_state = false;
param_device_connection.id = pal_device_ids[i];
@@ -1620,10 +1631,6 @@ int AudioDevice::SetParameters(const char *kvpairs) {
}
AHAL_INFO("pal set param sucess for device disconnect");
}
- if (pal_device_ids) {
- free(pal_device_ids);
- pal_device_ids = NULL;
- }
}
}