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

Commit cce8fc1c authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge 57fe3200 on remote branch

Change-Id: Ic3e82ac69b4fb58a8ba919b07f5a696d900ff11d
parents 4daeaaa7 57fe3200
Loading
Loading
Loading
Loading
+16 −7
Original line number Diff line number Diff line
@@ -697,24 +697,31 @@ static int vol_prc_lib_release(effect_handle_t handle)
    struct listnode *node = NULL;
    vol_listener_context_t *context = NULL;
    vol_listener_context_t *recv_contex = (vol_listener_context_t *)handle;
    int status = -1;
    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);
    if (recv_contex == NULL || recv_contex->desc == NULL) {
        ALOGE("%s: Got invalid handle while release, DO NOTHING ", __func__);

    if (recv_contex == NULL) {
        return status;
    }

    pthread_mutex_lock(&vol_listner_init_lock);
    session_id = recv_contex->session_id;
    stream_type = recv_contex->stream_type;
    uuid = recv_contex->desc->uuid;

    // check if the handle/context provided is valid
    list_for_each(node, &vol_effect_list) {
        context = node_to_item(node, struct vol_listener_context_s, effect_list_node);
        if ((memcmp(&(context->desc->uuid), &(recv_contex->desc->uuid), sizeof(effect_uuid_t)) == 0)
            && (context->session_id == recv_contex->session_id)
            && (context->stream_type == recv_contex->stream_type)) {
        if ((memcmp(&(context->desc->uuid), &uuid, sizeof(effect_uuid_t)) == 0)
            && (context->session_id == session_id)
            && (context->stream_type == stream_type)) {
            ALOGV("--- Found something to remove ---");
            list_remove(node);
            PRINT_STREAM_TYPE(context->stream_type);
            if (context->dev_id == AUDIO_DEVICE_OUT_SPEAKER) {
                recompute_flag = true;
@@ -730,6 +737,8 @@ static int vol_prc_lib_release(effect_handle_t handle)

    if (status != 0) {
        ALOGE("something wrong ... <<<--- Found NOTHING to remove ... ???? --->>>>>");
        pthread_mutex_unlock(&vol_listner_init_lock);
        return status;
    }

    // if there are no active streams, reset cal and volume level