summaryrefslogtreecommitdiffstats
path: root/core/jni/android_media_AudioTrack.cpp
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-07-17 02:09:14 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2009-07-17 02:09:14 -0700
commitdbee03136fab65227bbe56b2cf03361a1bdbdf1c (patch)
treebef8db6a2e861f2f7de3997d048fe4acda92c881 /core/jni/android_media_AudioTrack.cpp
parentc185e7b9d8c8a84962dc80cb18478eaf263fc667 (diff)
parent733cbb0009d3e16eac2383a694833bdbc0c7269e (diff)
downloadframeworks_base-dbee03136fab65227bbe56b2cf03361a1bdbdf1c.zip
frameworks_base-dbee03136fab65227bbe56b2cf03361a1bdbdf1c.tar.gz
frameworks_base-dbee03136fab65227bbe56b2cf03361a1bdbdf1c.tar.bz2
am 733cbb00: Merge change 7492 into donut
Merge commit '733cbb0009d3e16eac2383a694833bdbc0c7269e' * commit '733cbb0009d3e16eac2383a694833bdbc0c7269e': Delete leaked global ref in AudioTrack constructor.
Diffstat (limited to 'core/jni/android_media_AudioTrack.cpp')
-rw-r--r--core/jni/android_media_AudioTrack.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp
index cf3ba7f..bc7f3f5 100644
--- a/core/jni/android_media_AudioTrack.cpp
+++ b/core/jni/android_media_AudioTrack.cpp
@@ -75,6 +75,9 @@ class AudioTrackJniStorage {
int mStreamType;
AudioTrackJniStorage() {
+ mCallbackData.audioTrack_class = 0;
+ mCallbackData.audioTrack_ref = 0;
+ mStreamType = AudioSystem::DEFAULT;
}
~AudioTrackJniStorage() {
@@ -318,6 +321,8 @@ native_init_failure:
env->SetIntField(thiz, javaAudioTrackFields.nativeTrackInJavaObj, 0);
native_track_failure:
+ env->DeleteGlobalRef(lpJniStorage->mCallbackData.audioTrack_class);
+ env->DeleteGlobalRef(lpJniStorage->mCallbackData.audioTrack_ref);
delete lpJniStorage;
env->SetIntField(thiz, javaAudioTrackFields.jniData, 0);
return AUDIOTRACK_ERROR_SETUP_NATIVEINITFAILED;
@@ -415,6 +420,9 @@ static void android_media_AudioTrack_native_finalize(JNIEnv *env, jobject thiz)
AudioTrackJniStorage* pJniStorage = (AudioTrackJniStorage *)env->GetIntField(
thiz, javaAudioTrackFields.jniData);
if (pJniStorage) {
+ // delete global refs created in native_setup
+ env->DeleteGlobalRef(pJniStorage->mCallbackData.audioTrack_class);
+ env->DeleteGlobalRef(pJniStorage->mCallbackData.audioTrack_ref);
//LOGV("deleting pJniStorage: %x\n", (int)pJniStorage);
delete pJniStorage;
}