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

Commit f3ae63ee authored by Eric Laurent's avatar Eric Laurent Committed by Android Git Automerger
Browse files

am 52f58e96: Merge "fix problem in AudioEffect JNI setup." into gingerbread

Merge commit '52f58e96' into gingerbread-plus-aosp

* commit '52f58e96':
  fix problem in AudioEffect JNI setup.
parents 6c48f228 52f58e96
Loading
Loading
Loading
Loading
+19 −13
Original line number Diff line number Diff line
@@ -253,19 +253,21 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
    
    lpJniStorage->mStreamType = atStreamType;

    jint* nSession = NULL;
    if (jSession) {
        nSession = (jint *) env->GetPrimitiveArrayCritical(jSession, NULL);
        if (nSession == NULL) {
            LOGE("Error creating AudioTrack: Error retrieving session id pointer");
    if (jSession == NULL) {
        LOGE("Error creating AudioTrack: invalid session ID pointer");
        delete lpJniStorage;
        return AUDIOTRACK_ERROR;
    }
    } else {
        LOGE("Error creating AudioTrack: invalid session ID pointer");

    jint* nSession = (jint *) env->GetPrimitiveArrayCritical(jSession, NULL);
    if (nSession == NULL) {
        LOGE("Error creating AudioTrack: Error retrieving session id pointer");
        delete lpJniStorage;
        return AUDIOTRACK_ERROR;
    }
    int sessionId = nSession[0];
    env->ReleasePrimitiveArrayCritical(jSession, nSession, 0);
    nSession = NULL;

    // create the native AudioTrack object
    AudioTrack* lpTrack = new AudioTrack();
@@ -288,7 +290,7 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
            0,// notificationFrames == 0 since not using EVENT_MORE_DATA to feed the AudioTrack
            0,// shared mem
            true,// thread can call Java
            nSession[0]);// audio session ID
            sessionId);// audio session ID
            
    } else if (memoryMode == javaAudioTrackFields.MODE_STATIC) {
        // AudioTrack is using shared memory
@@ -309,7 +311,7 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
            0,// notificationFrames == 0 since not using EVENT_MORE_DATA to feed the AudioTrack 
            lpJniStorage->mMemBase,// shared mem
            true,// thread can call Java
            nSession[0]);// audio session ID
            sessionId);// audio session ID
    }

    if (lpTrack->initCheck() != NO_ERROR) {
@@ -317,9 +319,13 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
        goto native_init_failure;
    }

    nSession = (jint *) env->GetPrimitiveArrayCritical(jSession, NULL);
    if (nSession == NULL) {
        LOGE("Error creating AudioTrack: Error retrieving session id pointer");
        goto native_init_failure;
    }
    // read the audio session ID back from AudioTrack in case we create a new session
    nSession[0] = lpTrack->getSessionId();

    env->ReleasePrimitiveArrayCritical(jSession, nSession, 0);
    nSession = NULL;

+7 −9
Original line number Diff line number Diff line
@@ -304,14 +304,7 @@ android_media_AudioEffect_native_setup(JNIEnv *env, jobject thiz, jobject weak_t
            lpJniStorage->mCallbackData.audioEffect_class,
            &lpJniStorage->mCallbackData);

    if (jId) {
        nId = (jint *) env->GetPrimitiveArrayCritical(jId, NULL);
        if (nId == NULL) {
            LOGE("setup: Error retrieving id pointer");
            lStatus = AUDIOEFFECT_ERROR_BAD_VALUE;
            goto setup_failure;
        }
    } else {
    if (jId == NULL) {
        LOGE("setup: NULL java array for id pointer");
        lStatus = AUDIOEFFECT_ERROR_BAD_VALUE;
        goto setup_failure;
@@ -336,8 +329,13 @@ android_media_AudioEffect_native_setup(JNIEnv *env, jobject thiz, jobject weak_t
        goto setup_failure;
    }

    nId = (jint *) env->GetPrimitiveArrayCritical(jId, NULL);
    if (nId == NULL) {
        LOGE("setup: Error retrieving id pointer");
        lStatus = AUDIOEFFECT_ERROR_BAD_VALUE;
        goto setup_failure;
    }
    nId[0] = lpAudioEffect->id();

    env->ReleasePrimitiveArrayCritical(jId, nId, 0);
    nId = NULL;

+7 −10
Original line number Diff line number Diff line
@@ -246,14 +246,7 @@ android_media_visualizer_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
            lpJniStorage->mCallbackData.visualizer_class,
            &lpJniStorage->mCallbackData);

    if (jId) {
        nId = (jint *) env->GetPrimitiveArrayCritical(jId, NULL);
        if (nId == NULL) {
            LOGE("setup: Error retrieving id pointer");
            lStatus = VISUALIZER_ERROR_BAD_VALUE;
            goto setup_failure;
        }
    } else {
    if (jId == NULL) {
        LOGE("setup: NULL java array for id pointer");
        lStatus = VISUALIZER_ERROR_BAD_VALUE;
        goto setup_failure;
@@ -275,8 +268,13 @@ android_media_visualizer_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
        goto setup_failure;
    }

    nId = (jint *) env->GetPrimitiveArrayCritical(jId, NULL);
    if (nId == NULL) {
        LOGE("setup: Error retrieving id pointer");
        lStatus = VISUALIZER_ERROR_BAD_VALUE;
        goto setup_failure;
    }
    nId[0] = lpVisualizer->id();

    env->ReleasePrimitiveArrayCritical(jId, nId, 0);
    nId = NULL;

@@ -424,7 +422,6 @@ android_media_visualizer_native_getWaveForm(JNIEnv *env, jobject thiz, jbyteArra
    jint status = translateError(lpVisualizer->getWaveForm((uint8_t *)nWaveform));

    env->ReleasePrimitiveArrayCritical(jWaveform, nWaveform, 0);

    return status;
}