From f76afc80d229cf0c918e849acf5d8c4f5d4ffd07 Mon Sep 17 00:00:00 2001 From: Jamie Gennis Date: Fri, 14 Oct 2011 19:06:55 -0700 Subject: [PATCH] MediaPlayer: properly handle released surfaces Bug: 5396571 Change-Id: I6af87cb04f09f9ae6ea77cd7ba31108a3e93d24a --- media/jni/android_media_MediaPlayer.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/media/jni/android_media_MediaPlayer.cpp b/media/jni/android_media_MediaPlayer.cpp index f3174fef26664..63cbf5e076b2d 100644 --- a/media/jni/android_media_MediaPlayer.cpp +++ b/media/jni/android_media_MediaPlayer.cpp @@ -274,8 +274,14 @@ setVideoSurface(JNIEnv *env, jobject thiz, jobject jsurface, jboolean mediaPlaye sp new_st; if (jsurface) { sp surface(Surface_getSurface(env, jsurface)); - new_st = surface->getSurfaceTexture(); - new_st->incStrong(thiz); + if (surface != NULL) { + new_st = surface->getSurfaceTexture(); + new_st->incStrong(thiz); + } else { + jniThrowException(env, "java/lang/IllegalArgumentException", + "The surface has been released"); + return; + } } env->SetIntField(thiz, fields.surface_texture, (int)new_st.get());