Index: content/browser/media/android/browser_media_player_manager.cc |
diff --git a/content/browser/media/android/browser_media_player_manager.cc b/content/browser/media/android/browser_media_player_manager.cc |
index c847a275b8f37d484775164dd90079ab69a135e7..24a4895b2782e07279c45f7202ea168a25cf562b 100644 |
--- a/content/browser/media/android/browser_media_player_manager.cc |
+++ b/content/browser/media/android/browser_media_player_manager.cc |
@@ -83,8 +83,6 @@ MediaPlayerAndroid* BrowserMediaPlayerManager::CreateMediaPlayer( |
manager, |
base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, |
weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesReleased, |
- weak_ptr_factory_.GetWeakPtr()), |
media_player_params.frame_url, |
media_player_params.allow_credentials); |
BrowserMediaPlayerManager* browser_media_player_manager = |
@@ -112,8 +110,6 @@ MediaPlayerAndroid* BrowserMediaPlayerManager::CreateMediaPlayer( |
manager, |
base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, |
weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesReleased, |
- weak_ptr_factory_.GetWeakPtr()), |
demuxer->CreateDemuxer(media_player_params.demuxer_client_id), |
media_player_params.frame_url); |
} |
@@ -499,7 +495,7 @@ void BrowserMediaPlayerManager::OnSetPoster(int player_id, const GURL& url) { |
void BrowserMediaPlayerManager::OnReleaseResources(int player_id) { |
MediaPlayerAndroid* player = GetPlayer(player_id); |
if (player) |
- player->Release(); |
+ ReleasePlayer(player); |
if (player_id == fullscreen_player_id_) |
fullscreen_player_is_released_ = true; |
} |
@@ -518,8 +514,8 @@ void BrowserMediaPlayerManager::AddPlayer(MediaPlayerAndroid* player) { |
void BrowserMediaPlayerManager::RemovePlayer(int player_id) { |
for (ScopedVector<MediaPlayerAndroid>::iterator it = players_.begin(); |
it != players_.end(); ++it) { |
- MediaPlayerAndroid* player = *it; |
- if (player->player_id() == player_id) { |
+ if ((*it)->player_id() == player_id) { |
+ ReleaseMediaResources(player_id); |
players_.erase(it); |
break; |
} |
@@ -533,6 +529,7 @@ scoped_ptr<media::MediaPlayerAndroid> BrowserMediaPlayerManager::SwapPlayer( |
it != players_.end(); ++it) { |
if ((*it)->player_id() == player_id) { |
previous_player = *it; |
+ ReleaseMediaResources(player_id); |
players_.weak_erase(it); |
players_.push_back(player); |
break; |
@@ -551,7 +548,7 @@ bool BrowserMediaPlayerManager::Send(IPC::Message* msg) { |
void BrowserMediaPlayerManager::ReleaseFullscreenPlayer( |
MediaPlayerAndroid* player) { |
- player->Release(); |
+ ReleasePlayer(player); |
} |
void BrowserMediaPlayerManager::OnMediaResourcesRequested(int player_id) { |
@@ -575,14 +572,14 @@ void BrowserMediaPlayerManager::OnMediaResourcesRequested(int player_id) { |
for (it = players_.begin(); it != players_.end(); ++it) { |
if ((*it)->IsPlayerReady() && !(*it)->IsPlaying() && |
fullscreen_player_id_ != (*it)->player_id()) { |
- (*it)->Release(); |
+ ReleasePlayer(*it); |
Send(new MediaPlayerMsg_MediaPlayerReleased(RoutingID(), |
(*it)->player_id())); |
} |
} |
} |
-void BrowserMediaPlayerManager::OnMediaResourcesReleased(int player_id) { |
+void BrowserMediaPlayerManager::ReleaseMediaResources(int player_id) { |
#if defined(VIDEO_HOLE) |
MediaPlayerAndroid* player = GetPlayer(player_id); |
if (player && player->IsSurfaceInUse()) |
@@ -592,4 +589,9 @@ void BrowserMediaPlayerManager::OnMediaResourcesReleased(int player_id) { |
#endif // defined(VIDEO_HOLE) |
} |
+void BrowserMediaPlayerManager::ReleasePlayer(MediaPlayerAndroid* player) { |
+ player->Release(); |
+ ReleaseMediaResources(player->player_id()); |
+} |
+ |
} // namespace content |