Merge change 6766
* changes: Don't pass references to temporary objects, and handle the case where we dont have a Surface.
This commit is contained in:
@@ -101,10 +101,9 @@ void JNIMediaPlayerListener::notify(int msg, int ext1, int ext2)
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
static sp<Surface> get_surface(JNIEnv* env, jobject clazz)
|
||||
static Surface* get_surface(JNIEnv* env, jobject clazz)
|
||||
{
|
||||
Surface* const p = (Surface*)env->GetIntField(clazz, fields.surface_native);
|
||||
return sp<Surface>(p);
|
||||
return (Surface*)env->GetIntField(clazz, fields.surface_native);
|
||||
}
|
||||
|
||||
static sp<MediaPlayer> getMediaPlayer(JNIEnv* env, jobject thiz)
|
||||
@@ -205,7 +204,7 @@ static void setVideoSurface(const sp<MediaPlayer>& mp, JNIEnv *env, jobject thiz
|
||||
{
|
||||
jobject surface = env->GetObjectField(thiz, fields.surface);
|
||||
if (surface != NULL) {
|
||||
const sp<Surface>& native_surface = get_surface(env, surface);
|
||||
const sp<Surface> native_surface = get_surface(env, surface);
|
||||
LOGV("prepare: surface=%p (id=%d)",
|
||||
native_surface.get(), native_surface->ID());
|
||||
mp->setVideoSurface(native_surface);
|
||||
@@ -245,7 +244,7 @@ android_media_MediaPlayer_prepareAsync(JNIEnv *env, jobject thiz)
|
||||
}
|
||||
jobject surface = env->GetObjectField(thiz, fields.surface);
|
||||
if (surface != NULL) {
|
||||
const sp<Surface>& native_surface = get_surface(env, surface);
|
||||
const sp<Surface> native_surface = get_surface(env, surface);
|
||||
LOGV("prepareAsync: surface=%p (id=%d)",
|
||||
native_surface.get(), native_surface->ID());
|
||||
mp->setVideoSurface(native_surface);
|
||||
|
||||
@@ -233,7 +233,10 @@ status_t MediaPlayer::setVideoSurface(const sp<Surface>& surface)
|
||||
LOGV("setVideoSurface");
|
||||
Mutex::Autolock _l(mLock);
|
||||
if (mPlayer == 0) return NO_INIT;
|
||||
return mPlayer->setVideoSurface(surface->getISurface());
|
||||
if (surface != NULL)
|
||||
return mPlayer->setVideoSurface(surface->getISurface());
|
||||
else
|
||||
return mPlayer->setVideoSurface(NULL);
|
||||
}
|
||||
|
||||
// must call with lock held
|
||||
|
||||
Reference in New Issue
Block a user