Chromium Code Reviews| Index: content/renderer/media/android/webmediaplayer_android.cc |
| diff --git a/content/renderer/media/android/webmediaplayer_android.cc b/content/renderer/media/android/webmediaplayer_android.cc |
| index 6b3a5895c6c99b6fb2a7b5112319e757f3089363..c70a9fcb11264f184167a3104a7ab9a9ef5681e1 100644 |
| --- a/content/renderer/media/android/webmediaplayer_android.cc |
| +++ b/content/renderer/media/android/webmediaplayer_android.cc |
| @@ -153,6 +153,7 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid( |
| DCHECK(cdm_manager_); |
| DCHECK(main_thread_checker_.CalledOnValidThread()); |
| + stream_texture_factory_->AddObserver(this); |
| player_id_ = player_manager_->RegisterMediaPlayer(this); |
| @@ -194,6 +195,8 @@ WebMediaPlayerAndroid::~WebMediaPlayerAndroid() { |
| if (player_type_ == MEDIA_PLAYER_TYPE_MEDIA_SOURCE && delegate_) |
| delegate_->PlayerGone(this); |
| + |
| + stream_texture_factory_->RemoveObserver(this); |
| } |
| void WebMediaPlayerAndroid::load(LoadType load_type, |
| @@ -322,6 +325,28 @@ void WebMediaPlayerAndroid::play() { |
| UpdateNetworkState(WebMediaPlayer::NetworkStateLoading); |
| } |
| +void WebMediaPlayerAndroid::ResetStreamTextureProxy() { |
| + if (stream_id_) { |
| + GLES2Interface* gl = stream_texture_factory_->ContextGL(); |
| + gl->DeleteTextures(1, &texture_id_); |
| + texture_id_ = 0; |
| + texture_mailbox_ = gpu::Mailbox(); |
| + stream_id_ = 0; |
| + } |
| + stream_texture_proxy_.reset(); |
| + SetNeedsEstablishPeer(true); |
| + |
| + TryCreateStreamTextureProxyIfNeeded(); |
| + // TODO(boliu): This is not thread safe. |
| + stream_texture_proxy_initialized_ = false; |
| + if (hasVideo() && needs_establish_peer_ && |
|
qinmin
2014/09/04 00:14:47
isn't needs_establish_peer_ true since you called
|
| + !player_manager_->IsInFullscreen(frame_)) { |
| + EstablishSurfaceTexturePeer(); |
| + } |
| + |
| + // TODO(boliu): Inform |video_frame_provider_client_| on compositor thread. |
|
qinmin
2014/09/04 00:14:47
you also need to bind the new stream texture proxy
|
| +} |
| + |
| void WebMediaPlayerAndroid::pause() { |
| DCHECK(main_thread_checker_.CalledOnValidThread()); |
| Pause(true); |