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

Commit 2d4e92a7 authored by Bill Yi's avatar Bill Yi Committed by Gerrit Code Review
Browse files

Merge "Merge stage-aosp-master to aosp-master - DO NOT MERGE"

parents e6a167ec c06ce663
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -6284,12 +6284,10 @@ static int adev_verify_devices(struct audio_device *adev)
static int adev_close(hw_device_t *device)
{
    size_t i;
    struct audio_device *adev_temp = (struct audio_device *)device;

    if (!adev_temp)
        return 0;

    pthread_mutex_lock(&adev_init_lock);
    if (!device || ((struct audio_device *)device != adev))
        goto done;

    if ((--audio_device_ref_count) == 0) {
        audio_extn_snd_mon_unregister_listener(adev);
@@ -6308,10 +6306,11 @@ static int adev_close(hw_device_t *device)
            adev->adm_deinit(adev->adm_data);
        pthread_mutex_destroy(&adev->lock);
        free(device);
        adev = NULL;
    }

done:
    pthread_mutex_unlock(&adev_init_lock);

    return 0;
}

+3 −18
Original line number Diff line number Diff line
@@ -764,9 +764,6 @@ static int vol_prc_lib_release(effect_handle_t handle)
    int status = -EINVAL;
    bool recompute_flag = false;
    int active_stream_count = 0;
    uint32_t session_id;
    uint32_t stream_type;
    effect_uuid_t uuid;

    ALOGV("%s context %p", __func__, handle);

@@ -774,32 +771,20 @@ static int vol_prc_lib_release(effect_handle_t handle)
        return status;
    }
    pthread_mutex_lock(&vol_listner_init_lock);
    session_id = recv_contex->session_id;
    stream_type = recv_contex->stream_type;

    if (recv_contex->desc == NULL) {
        ALOGE("%s: Got NULL descriptor, session %u, stream type %u",
                __func__, session_id, stream_type);
        dump_list_l();
        pthread_mutex_unlock(&vol_listner_init_lock);
        return status;
    }
    uuid = recv_contex->desc->uuid;

    // check if the handle/context provided is valid
    list_for_each_safe(node, temp_node_next, &vol_effect_list) {
        context = node_to_item(node, struct vol_listener_context_s, effect_list_node);
        if ((memcmp(&(context->desc->uuid), &uuid, sizeof(effect_uuid_t)) == 0)
            && (context->session_id == session_id)
            && (context->stream_type == stream_type)) {
        if (context == recv_contex) {
            ALOGV("--- Found something to remove ---");
            list_remove(node);
            PRINT_STREAM_TYPE(context->stream_type);
            if (valid_dev_in_context(context)) {
                recompute_flag = true;
            }
            list_remove(&context->effect_list_node);
            free(context);
            status = 0;
            break;
        } else {
            ++active_stream_count;
        }