summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
Diffstat (limited to 'webkit')
-rw-r--r--webkit/media/android/webmediaplayer_android.cc11
-rw-r--r--webkit/media/android/webmediaplayer_android.h3
-rw-r--r--webkit/media/android/webmediaplayer_impl_android.cc4
-rw-r--r--webkit/media/android/webmediaplayer_manager_android.cc6
4 files changed, 18 insertions, 6 deletions
diff --git a/webkit/media/android/webmediaplayer_android.cc b/webkit/media/android/webmediaplayer_android.cc
index 2044737..33fd2d9 100644
--- a/webkit/media/android/webmediaplayer_android.cc
+++ b/webkit/media/android/webmediaplayer_android.cc
@@ -360,6 +360,13 @@ void WebMediaPlayerAndroid::ReleaseMediaResources() {
}
void WebMediaPlayerAndroid::WillDestroyCurrentMessageLoop() {
+ if (manager_)
+ manager_->UnregisterMediaPlayer(player_id_);
+ Detach();
+ main_loop_ = NULL;
+}
+
+void WebMediaPlayerAndroid::Detach() {
Destroy();
if (stream_id_) {
@@ -369,11 +376,7 @@ void WebMediaPlayerAndroid::WillDestroyCurrentMessageLoop() {
video_frame_.reset();
- if (manager_)
- manager_->UnregisterMediaPlayer(player_id_);
-
manager_ = NULL;
- main_loop_ = NULL;
}
void WebMediaPlayerAndroid::ReallocateVideoFrame() {
diff --git a/webkit/media/android/webmediaplayer_android.h b/webkit/media/android/webmediaplayer_android.h
index bba48dd..58d0d77 100644
--- a/webkit/media/android/webmediaplayer_android.h
+++ b/webkit/media/android/webmediaplayer_android.h
@@ -121,6 +121,9 @@ class WebMediaPlayerAndroid
// Method inherited from DestructionObserver.
virtual void WillDestroyCurrentMessageLoop() OVERRIDE;
+ // Detach the player from its manager.
+ void Detach();
+
protected:
// Construct a WebMediaPlayerAndroid object with reference to the
// client, manager and stream texture factory.
diff --git a/webkit/media/android/webmediaplayer_impl_android.cc b/webkit/media/android/webmediaplayer_impl_android.cc
index c43605f..fe4d0a5 100644
--- a/webkit/media/android/webmediaplayer_impl_android.cc
+++ b/webkit/media/android/webmediaplayer_impl_android.cc
@@ -34,7 +34,8 @@ WebMediaPlayerImplAndroid::WebMediaPlayerImplAndroid(
}
WebMediaPlayerImplAndroid::~WebMediaPlayerImplAndroid() {
- Destroy();
+ if (proxy_)
+ proxy_->DestroyPlayer(player_id());
}
void WebMediaPlayerImplAndroid::enterFullscreen() {
@@ -125,7 +126,6 @@ void WebMediaPlayerImplAndroid::OnMediaPlayerPause() {
}
void WebMediaPlayerImplAndroid::Destroy() {
- proxy_->DestroyPlayer(player_id());
proxy_ = NULL;
}
diff --git a/webkit/media/android/webmediaplayer_manager_android.cc b/webkit/media/android/webmediaplayer_manager_android.cc
index 4d24ad43..c64de25 100644
--- a/webkit/media/android/webmediaplayer_manager_android.cc
+++ b/webkit/media/android/webmediaplayer_manager_android.cc
@@ -14,6 +14,12 @@ WebMediaPlayerManagerAndroid::WebMediaPlayerManagerAndroid()
}
WebMediaPlayerManagerAndroid::~WebMediaPlayerManagerAndroid() {
+ std::map<int32, WebMediaPlayerAndroid*>::iterator player_it;
+ for (player_it = media_players_.begin();
+ player_it != media_players_.end(); ++player_it) {
+ WebMediaPlayerAndroid* player = player_it->second;
+ player->Detach();
+ }
}
int WebMediaPlayerManagerAndroid::RegisterMediaPlayer(