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 6a0d2fc7a1a723312fec80f6f8c97013b0ad9611..d30760f96b0ecf8169079f64ba3665ed702e9401 100644 |
--- a/content/renderer/media/android/webmediaplayer_android.cc |
+++ b/content/renderer/media/android/webmediaplayer_android.cc |
@@ -66,12 +66,12 @@ namespace content { |
void WebMediaPlayerAndroid::OnReleaseRemotePlaybackTexture( |
const scoped_refptr<base::MessageLoopProxy>& main_loop, |
const base::WeakPtr<WebMediaPlayerAndroid>& player, |
- uint32 sync_point) { |
+ scoped_ptr<gpu::MailboxHolder> mailbox_holder) { |
main_loop->PostTask( |
FROM_HERE, |
base::Bind(&WebMediaPlayerAndroid::DoReleaseRemotePlaybackTexture, |
player, |
- sync_point)); |
+ base::Passed(&mailbox_holder))); |
} |
WebMediaPlayerAndroid::WebMediaPlayerAndroid( |
@@ -990,19 +990,16 @@ void WebMediaPlayerAndroid::DrawRemotePlaybackIcon() { |
unsigned texture_mailbox_sync_point = context->insertSyncPoint(); |
scoped_refptr<VideoFrame> new_frame = VideoFrame::WrapNativeTexture( |
- make_scoped_ptr(new VideoFrame::MailboxHolder( |
- texture_mailbox, |
- texture_mailbox_sync_point, |
- base::Bind(&WebMediaPlayerAndroid::OnReleaseRemotePlaybackTexture, |
- main_loop_, |
- weak_factory_.GetWeakPtr()))), |
- texture_target, |
+ make_scoped_ptr(new gpu::MailboxHolder( |
+ texture_mailbox, texture_target, texture_mailbox_sync_point)), |
+ base::Bind(&WebMediaPlayerAndroid::OnReleaseRemotePlaybackTexture, |
+ main_loop_, |
+ weak_factory_.GetWeakPtr()), |
canvas_size /* coded_size */, |
gfx::Rect(canvas_size) /* visible_rect */, |
canvas_size /* natural_size */, |
base::TimeDelta() /* timestamp */, |
- VideoFrame::ReadPixelsCB(), |
- base::Closure() /* no_longer_needed_cb */); |
+ VideoFrame::ReadPixelsCB()); |
SetCurrentFrameInternal(new_frame); |
} |
@@ -1022,17 +1019,15 @@ void WebMediaPlayerAndroid::ReallocateVideoFrame() { |
#endif |
} else if (!is_remote_ && texture_id_) { |
scoped_refptr<VideoFrame> new_frame = VideoFrame::WrapNativeTexture( |
- make_scoped_ptr(new VideoFrame::MailboxHolder( |
- texture_mailbox_, |
- texture_mailbox_sync_point_, |
- VideoFrame::MailboxHolder::TextureNoLongerNeededCallback())), |
- kGLTextureExternalOES, |
+ make_scoped_ptr(new gpu::MailboxHolder(texture_mailbox_, |
+ kGLTextureExternalOES, |
+ texture_mailbox_sync_point_)), |
+ gpu::MailboxHolder::ReleaseCallback(), |
natural_size_, |
gfx::Rect(natural_size_), |
natural_size_, |
base::TimeDelta(), |
- VideoFrame::ReadPixelsCB(), |
- base::Closure()); |
+ VideoFrame::ReadPixelsCB()); |
SetCurrentFrameInternal(new_frame); |
} |
} |
@@ -1423,13 +1418,15 @@ bool WebMediaPlayerAndroid::InjectMediaStream( |
} |
#endif |
-void WebMediaPlayerAndroid::DoReleaseRemotePlaybackTexture(uint32 sync_point) { |
+void WebMediaPlayerAndroid::DoReleaseRemotePlaybackTexture( |
+ scoped_ptr<gpu::MailboxHolder> mailbox_holder) { |
DCHECK(main_thread_checker_.CalledOnValidThread()); |
DCHECK(remote_playback_texture_id_); |
blink::WebGraphicsContext3D* context = |
stream_texture_factory_->Context3d(); |
+ const uint32 sync_point = mailbox_holder->sync_point(); |
if (sync_point) |
context->waitSyncPoint(sync_point); |
context->deleteTexture(remote_playback_texture_id_); |