Skip to content

Commit 5d478b9

Browse files
James DongAndroid (Google) Code Review
authored andcommitted
Merge "Changed to obtain a parcel in each notify() call in jni." into jb-dev
2 parents a4d4df1 + 333c099 commit 5d478b9

File tree

2 files changed

+5
-8
lines changed

2 files changed

+5
-8
lines changed

media/java/android/media/MediaPlayer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2026,6 +2026,7 @@ public void handleMessage(Message msg) {
20262026
if (msg.obj instanceof Parcel) {
20272027
Parcel parcel = (Parcel)msg.obj;
20282028
TimedText text = new TimedText(parcel);
2029+
parcel.recycle();
20292030
mOnTimedTextListener.onTimedText(mMediaPlayer, text);
20302031
}
20312032
}

media/jni/android_media_MediaPlayer.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ class JNIMediaPlayerListener: public MediaPlayerListener
7272
JNIMediaPlayerListener();
7373
jclass mClass; // Reference to MediaPlayer class
7474
jobject mObject; // Weak ref to MediaPlayer Java object to call on
75-
jobject mParcel;
7675
};
7776

7877
JNIMediaPlayerListener::JNIMediaPlayerListener(JNIEnv* env, jobject thiz, jobject weak_thiz)
@@ -91,7 +90,6 @@ JNIMediaPlayerListener::JNIMediaPlayerListener(JNIEnv* env, jobject thiz, jobjec
9190
// We use a weak reference so the MediaPlayer object can be garbage collected.
9291
// The reference is only used as a proxy for callbacks.
9392
mObject = env->NewGlobalRef(weak_thiz);
94-
mParcel = env->NewGlobalRef(createJavaParcelObject(env));
9593
}
9694

9795
JNIMediaPlayerListener::~JNIMediaPlayerListener()
@@ -100,20 +98,18 @@ JNIMediaPlayerListener::~JNIMediaPlayerListener()
10098
JNIEnv *env = AndroidRuntime::getJNIEnv();
10199
env->DeleteGlobalRef(mObject);
102100
env->DeleteGlobalRef(mClass);
103-
104-
recycleJavaParcelObject(env, mParcel);
105-
env->DeleteGlobalRef(mParcel);
106101
}
107102

108103
void JNIMediaPlayerListener::notify(int msg, int ext1, int ext2, const Parcel *obj)
109104
{
110105
JNIEnv *env = AndroidRuntime::getJNIEnv();
111106
if (obj && obj->dataSize() > 0) {
112-
if (mParcel != NULL) {
113-
Parcel* nativeParcel = parcelForJavaObject(env, mParcel);
107+
jobject jParcel = createJavaParcelObject(env);
108+
if (jParcel != NULL) {
109+
Parcel* nativeParcel = parcelForJavaObject(env, jParcel);
114110
nativeParcel->setData(obj->data(), obj->dataSize());
115111
env->CallStaticVoidMethod(mClass, fields.post_event, mObject,
116-
msg, ext1, ext2, mParcel);
112+
msg, ext1, ext2, jParcel);
117113
}
118114
} else {
119115
env->CallStaticVoidMethod(mClass, fields.post_event, mObject,

0 commit comments

Comments
 (0)