diff options
| -rw-r--r-- | media/java/android/media/MediaPlayer2.java | 6 | ||||
| -rw-r--r-- | media/jni/Android.bp | 1 | ||||
| -rw-r--r-- | media/jni/android_media_MediaPlayer2.cpp | 19 |
3 files changed, 16 insertions, 10 deletions
diff --git a/media/java/android/media/MediaPlayer2.java b/media/java/android/media/MediaPlayer2.java index cef66147f395..9af73fcaf243 100644 --- a/media/java/android/media/MediaPlayer2.java +++ b/media/java/android/media/MediaPlayer2.java @@ -1309,11 +1309,11 @@ public class MediaPlayer2 implements AutoCloseable return addTask(new Task(CALL_COMPLETED_SET_WAKE_LOCK, false) { @Override void process() { - boolean washeld = false; + boolean wasHeld = false; if (mWakeLock != null) { if (mWakeLock.isHeld()) { - washeld = true; + wasHeld = true; mWakeLock.release(); } } @@ -1321,7 +1321,7 @@ public class MediaPlayer2 implements AutoCloseable mWakeLock = wakeLock; if (mWakeLock != null) { mWakeLock.setReferenceCounted(false); - if (washeld) { + if (wasHeld) { mWakeLock.acquire(); } } diff --git a/media/jni/Android.bp b/media/jni/Android.bp index fda0fc4c8546..d6b6339b8f5f 100644 --- a/media/jni/Android.bp +++ b/media/jni/Android.bp @@ -102,7 +102,6 @@ cc_library_shared { "libhidlbase", "libhidlmemory", - "libpowermanager", // Used by JWakeLock. Will be replace with public SDK API. "libmediametrics", // Used by MediaMetrics. Will be replaced with stable C API. "libbinder", // Used by JWakeLock and MediaMetrics. diff --git a/media/jni/android_media_MediaPlayer2.cpp b/media/jni/android_media_MediaPlayer2.cpp index 7e6a8abbce90..9b4e730cfb5e 100644 --- a/media/jni/android_media_MediaPlayer2.cpp +++ b/media/jni/android_media_MediaPlayer2.cpp @@ -86,7 +86,8 @@ using media::VolumeShaper; // ---------------------------------------------------------------------------- struct fields_t { - jfieldID context; + jfieldID context; // passed from Java to native, used for creating JWakeLock + jfieldID nativeContext; // mNativeContext in MediaPlayer2.java jfieldID surface_texture; jmethodID post_event; @@ -225,21 +226,21 @@ void JNIMediaPlayer2Listener::notify(int64_t srcId, int msg, int ext1, int ext2, static sp<MediaPlayer2> getMediaPlayer(JNIEnv* env, jobject thiz) { Mutex::Autolock l(sLock); - MediaPlayer2* const p = (MediaPlayer2*)env->GetLongField(thiz, fields.context); + MediaPlayer2* const p = (MediaPlayer2*)env->GetLongField(thiz, fields.nativeContext); return sp<MediaPlayer2>(p); } static sp<MediaPlayer2> setMediaPlayer(JNIEnv* env, jobject thiz, const sp<MediaPlayer2>& player) { Mutex::Autolock l(sLock); - sp<MediaPlayer2> old = (MediaPlayer2*)env->GetLongField(thiz, fields.context); + sp<MediaPlayer2> old = (MediaPlayer2*)env->GetLongField(thiz, fields.nativeContext); if (player.get()) { player->incStrong((void*)setMediaPlayer); } if (old != 0) { old->decStrong((void*)setMediaPlayer); } - env->SetLongField(thiz, fields.context, (jlong)player.get()); + env->SetLongField(thiz, fields.nativeContext, (jlong)player.get()); return old; } @@ -955,11 +956,16 @@ android_media_MediaPlayer2_native_init(JNIEnv *env) return; } - fields.context = env->GetFieldID(clazz, "mNativeContext", "J"); + fields.context = env->GetFieldID(clazz, "mContext", "Landroid/content/Context;"); if (fields.context == NULL) { return; } + fields.nativeContext = env->GetFieldID(clazz, "mNativeContext", "J"); + if (fields.nativeContext == NULL) { + return; + } + fields.post_event = env->GetStaticMethodID(clazz, "postEventFromNative", "(Ljava/lang/Object;JIII[B)V"); if (fields.post_event == NULL) { @@ -1013,7 +1019,8 @@ android_media_MediaPlayer2_native_setup(JNIEnv *env, jobject thiz, jint sessionId, jobject weak_this) { ALOGV("native_setup"); - sp<MediaPlayer2> mp = MediaPlayer2::Create(sessionId); + jobject context = env->GetObjectField(thiz, fields.context); + sp<MediaPlayer2> mp = MediaPlayer2::Create(sessionId, context); if (mp == NULL) { jniThrowException(env, "java/lang/RuntimeException", "Out of memory"); return; |