diff options
| author | 2010-09-24 13:43:54 -0700 | |
|---|---|---|
| committer | 2010-09-24 13:43:54 -0700 | |
| commit | 52f58e96a723a56e6619c237c814a07503745de9 (patch) | |
| tree | 203eadaf681173e400d2d66a4a252c455a2d66a9 | |
| parent | 0cd28fdd16ac140d024953c7a076ffb3ec82c8b2 (diff) | |
| parent | 2fb43ef8c0b922c1bd0d7cb6867e30d702d4bdb8 (diff) | |
Merge "fix problem in AudioEffect JNI setup." into gingerbread
| -rw-r--r-- | core/jni/android_media_AudioTrack.cpp | 32 | ||||
| -rw-r--r-- | media/jni/audioeffect/android_media_AudioEffect.cpp | 16 | ||||
| -rw-r--r-- | media/jni/audioeffect/android_media_Visualizer.cpp | 17 |
3 files changed, 33 insertions, 32 deletions
diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp index 9d215b72d8be..8409adc9862d 100644 --- a/core/jni/android_media_AudioTrack.cpp +++ b/core/jni/android_media_AudioTrack.cpp @@ -252,21 +252,23 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th lpJniStorage->mCallbackData.audioTrack_ref = env->NewGlobalRef(weak_this); 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"); - delete lpJniStorage; - return AUDIOTRACK_ERROR; - } - } else { + + if (jSession == NULL) { LOGE("Error creating AudioTrack: invalid session ID pointer"); delete lpJniStorage; return AUDIOTRACK_ERROR; } + 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(); if (lpTrack == NULL) { @@ -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; diff --git a/media/jni/audioeffect/android_media_AudioEffect.cpp b/media/jni/audioeffect/android_media_AudioEffect.cpp index b16372d54de5..cb2f0f90286b 100644 --- a/media/jni/audioeffect/android_media_AudioEffect.cpp +++ b/media/jni/audioeffect/android_media_AudioEffect.cpp @@ -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; diff --git a/media/jni/audioeffect/android_media_Visualizer.cpp b/media/jni/audioeffect/android_media_Visualizer.cpp index 7b271cec448d..57cafd458fdd 100644 --- a/media/jni/audioeffect/android_media_Visualizer.cpp +++ b/media/jni/audioeffect/android_media_Visualizer.cpp @@ -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; } |