Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(498)

Unified Diff: media/base/android/media_player_bridge.cc

Issue 81693003: Release media player resources when device is locked (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed a mistake I just realized Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/base/android/media_player_bridge.h ('k') | media/base/android/media_source_player.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/android/media_player_bridge.cc
diff --git a/media/base/android/media_player_bridge.cc b/media/base/android/media_player_bridge.cc
index 64e2db849ea151798585db4ccb53488e40ed15c1..88c57ff44d3003875677f2ffcfd8e4ed2fa878a7 100644
--- a/media/base/android/media_player_bridge.cc
+++ b/media/base/android/media_player_bridge.cc
@@ -74,6 +74,13 @@ void MediaPlayerBridge::CreateJavaMediaPlayerBridge() {
j_media_player_bridge_.Reset(Java_MediaPlayerBridge_create(env));
+ if (!surface_.IsEmpty()) {
+ JNIEnv* env = base::android::AttachCurrentThread();
qinmin 2013/11/22 18:06:55 env is already defined inside this function.
+ CHECK(env);
+ Java_MediaPlayerBridge_setSurface(
+ env, j_media_player_bridge_.obj(), surface_.j_surface().obj());
+ }
+
SetMediaPlayerListener();
}
@@ -110,11 +117,13 @@ void MediaPlayerBridge::SetVideoSurface(gfx::ScopedJavaSurface surface) {
Prepare();
}
+ surface_ = surface.Pass();
+
JNIEnv* env = base::android::AttachCurrentThread();
CHECK(env);
Java_MediaPlayerBridge_setSurface(
- env, j_media_player_bridge_.obj(), surface.j_surface().obj());
+ env, j_media_player_bridge_.obj(), surface_.j_surface().obj());
}
void MediaPlayerBridge::Prepare() {
@@ -265,9 +274,12 @@ void MediaPlayerBridge::Release() {
pending_seek_ = GetCurrentTime();
prepared_ = false;
pending_play_ = false;
- SetVideoSurface(gfx::ScopedJavaSurface());
+ // Detach the surface from the java side player. We still hold our reference
+ // to it because we might reuse it when restarting with a new player.
JNIEnv* env = base::android::AttachCurrentThread();
+ Java_MediaPlayerBridge_setSurface(env, j_media_player_bridge_.obj(), NULL);
+
Java_MediaPlayerBridge_release(env, j_media_player_bridge_.obj());
j_media_player_bridge_.Reset();
manager()->ReleaseMediaResources(player_id());
« no previous file with comments | « media/base/android/media_player_bridge.h ('k') | media/base/android/media_source_player.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698