Chromium Code Reviews| 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 752c2f19b550ce99d57ab1078df78aeeca515c68..61d9ab6a1fd46083f01340b6d4fe0f2bf01971bf 100644 |
| --- a/content/browser/media/android/browser_media_player_manager.cc |
| +++ b/content/browser/media/android/browser_media_player_manager.cc |
| @@ -348,8 +348,15 @@ void BrowserMediaPlayerManager::AttachExternalVideoSurface(int player_id, |
| void BrowserMediaPlayerManager::DetachExternalVideoSurface(int player_id) { |
| MediaPlayerAndroid* player = GetPlayer(player_id); |
| - if (player) |
| + if (player) { |
| + // If a player looses its external surface because |
| + // it enters fullscreen, the video should not be paused. |
| + if (player_id != fullscreen_player_id_) { |
| + player->Release(); |
| + Send(new MediaPlayerMsg_DidMediaPlayerPause(RoutingID(), player_id)); |
| + } |
| player->SetVideoSurface(gfx::ScopedJavaSurface()); |
| + } |
| } |
| void BrowserMediaPlayerManager::OnFrameInfoUpdated() { |
| @@ -394,8 +401,13 @@ void BrowserMediaPlayerManager::OnRequestExternalSurface( |
| void BrowserMediaPlayerManager::OnEnterFullscreen(int player_id) { |
| DCHECK_EQ(fullscreen_player_id_, -1); |
| #if defined(VIDEO_HOLE) |
| + fullscreen_player_id_ = player_id; |
|
qinmin
2014/11/21 00:23:50
As I mentioned earlier, using fullscreen_player_id
|
| + // Avoid Z-fight: when any player goes |
| + // fullscreen release any external surface. |
| if (external_video_surface_container_) |
| - external_video_surface_container_->ReleaseExternalVideoSurface(player_id); |
| + external_video_surface_container_->ReleaseExternalVideoSurface( |
| + ExternalVideoSurfaceContainer::kAnyPlayer); |
| + fullscreen_player_id_ = -1; |
| #endif // defined(VIDEO_HOLE) |
| if (video_view_.get()) { |
| fullscreen_player_id_ = player_id; |